2014-09-23 41 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