2014-09-23 43 views
-5

你好我試圖使用PHP在MySQL中創建一些臨時表在MySQL中創建一些臨時表我試着使用PHP

我的代碼:

<?php 
mysql_connect("localhost","root","sahan");//database connection 
mysql_select_db("callcenter"); 

$maketemp="create table #temp1 (id varchar(50),date varchar(50),csc varchar(50),effectedareas varchar(50),agent varchar(50))"; 

$data1 = mysql_query($maketemp) 
or die(mysql_error()); 

?> 

,但它給出了一個錯誤:「你有在您的SQL語法錯誤;檢查對應於你的MySQL服務器版本,在1" 號線附近使用「」正確的語法

我的MySQL版本是以下手冊

MySQL Ver 14.12 Distrib 5.0.77,用於redhat-linux-gnu(i686)使用readline 5.1

我沒有太多流利的PHP編碼,請問有人能幫我嗎?

+3

[MySQL的臨時表(http://www.tutorialspoint.com /mysql/mysql-temporary-tables.htm) – bummi 2014-09-23 05:33:31

回答

1

我不知道你爲什麼要這樣的表名,但你需要標識符引號(反引號)才能工作。

 
`#temp1` 

您需要引號,否則將被視爲評論。 #

$maketemp = "CREATE TABLE `#temp1` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `date` varchar(50), 
    `csc` varchar(50), 
    `effectedareas` varchar(50), 
    `agent` varchar(50), 
    PRIMARY KEY (`id`) 
) COLLATE = 'utf8_general_ci' 
"; 

請使用mysql_*功能避免,他們已被棄用。 Click here

+1

剛來這裏說,+1 – Azrael 2014-09-23 05:34:45

+1

你沒看到:「臨時表」? – bummi 2014-09-23 06:04:23

+0

@bummi同樣也很有啓發,如果你不能把它作爲答案發布。 +1 – Ghost 2014-09-23 06:06:56

0

這裏的問題是聲明varchar爲自動增量的主鍵。所以使id數據類型爲int。那麼它的工作

$maketemp = "CREATE TABLE `#temp1` (
    `id` VARCHAR(50) NOT NULL AUTO_INCREMENT, 
    `date` varchar(50), 
    `csc` varchar(50), 
    `effectedareas` varchar(50), 
    `agent` varchar(50), 
    PRIMARY KEY (`id`) 
) COLLATE = 'utf8_general_ci' 
"; 

如果你想創建臨時表,在我的SQL,有作爲 http://www.mysqltutorial.org/mysql-temporary-table/

+0

在問題中,你在哪裏找到「varchar for primary key with auto increment」? – bummi 2014-09-23 05:57:51

+0

我們可以使用觸發器自動增量創建varchar。 – 2014-09-23 09:57:02

+0

CONCAT('PROD',LPAD(LAST_INSERT_ID(),3,'0')); – 2014-09-23 09:58:46

0

臨時表的功能在MySQL版本3.23中添加MySQL Temporary Tables
臨時表服用。如果您使用的是舊版本的MySQL而不是3.23,則不能使用臨時表,但可以使用堆表。

您正在混合使用MySQL語法的SQLServer語法。當你能夠創建在SQLServer的一個臨時表#table或在MySQL與##table一個gloabal臨時表,你必須使用關鍵字TEMPORARY

CREATE TEMPORARY TABLE temp1 (
     id varchar(50) 
     ,date varchar(50) 
     ,csc varchar(50) 
     ,effectedareas varchar(50) 
     ,agent varchar(50) 
     ) 
+0

謝謝bummi,當然這個代碼在mysql上工作。但在PHP中,它不工作。它給出了一個錯誤 – user3916665 2014-09-23 06:41:46

+0

我不熟悉PHP,所以我可以假設由@Ghost提供的鏈接[爲什麼我不應該在PHP中使用mysql_ *函數?](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)可能會回答你的問題的PHP部分。 – bummi 2014-09-23 06:49:47