2013-08-07 126 views
-1
<?php 
    $ll=mysql_query("CREATE TABLE IF NOT EXISTS p (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `title` varchar(255) NOT NULL DEFAULT '', 
    `colum` varchar(255) NOT NULL DEFAULT '', 
    `ord` varchar(255) NOT NULL DEFAULT '', 
    `tex` varchar(255) NOT NULL DEFAULT '', 
    `search` varchar(255) NOT NULL DEFAULT '', 
    `count` varchar(255) NOT NULL DEFAULT '', 
    `order` varchar(255) NOT NULL DEFAULT '', 
    PRIMARY KEY (`id`) 
)ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;INSERT INTO p (title,colum,ord,tex,search,count,order) VALUES ('$a','$b','$c','$d','$f','$h','$g');") or die(mysql_error()) ; 
if($ll){ 
echo "insert AND CREATE ";} 
else {echo "fail"; } 
?> 

我正在使用php语言。在这个页面,如果不创建表1创建它,然后将值代入列值未插入

创建表,我插入值到表后,但它显示我的错误中插入查询

我收到此错误 - 您的SQL语法错误;在'INSERT INTO p VALUES'('count','name','asc','1','search','count','order')附近检查与您的MySQL服务器版本相对应的手册, )”在我在做什么错线11

+0

你试过了什么?为什么不简单地执行标准调试? –

+0

您是否尝试过SQL,例如Phpmyadmin? –

+1

你做错了的第一件事是使用不推荐使用的mysql_函数。至于错误,我不认为你可以同时执行两个查询。 – JJJ

回答

0
INSERT INTO p (title,colum,ord,tex,search,count,order) VALUES ('$a','$b','$c','$d','$f','$h','$g') 

应该是

INSERT INTO p (`title`,`colum`,`ord`,`tex`,`search`,`count`,`order`) VALUES ('$a','$b','$c','$d','$f','$h','$g') 

因此顺序是一个MySQL的关键字

1

我是绝对不知道如果这是问题,但你在你的INSERT语句传递7个值,而你的表deffinition有8个领域。

我想你是这么做的,因为'id'字段是自动增量的。但是,如果是这样的话,你应该指定哪些列与你的价值观在INSERT语句对应:

INSERT INTO $p (title, column, ord, ...) VALUES ('$a','$b','$c','$d','$f','$h','$g') 
+0

我用你的方式,但我没有得到答案.....它显示我同样的错误 – user2657625

+0

@ user2657625你为什么不尝试在你的屏幕上打印你的SQL语句,所以你可以使用MySQL运行它客户端或至少将其复制到您的问题? –

+0

+1事实上,这是OP代码的一个问题。 –

1

这里是一个预演,分离该两种说法 - 应该工作:

<?php 
$querys[]="CREATE TABLE IF NOT EXISTS $p (
     `id` int(11) NOT NULL AUTO_INCREMENT, 
     `title` varchar(255) NOT NULL DEFAULT '', 
     `colum` varchar(255) NOT NULL DEFAULT '', 
     `ord` varchar(255) NOT NULL DEFAULT '', 
     `tex` varchar(255) NOT NULL DEFAULT '', 
     `search` varchar(255) NOT NULL DEFAULT '', 
     `count` varchar(255) NOT NULL DEFAULT '', 
     `order` varchar(255) NOT NULL DEFAULT '', 
     PRIMARY KEY (`id`) 
    )ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1"; 

$querys[]="INSERT INTO $p VALUES (null,'$a','{$b}','{$c}','{$d}','{$f}','{$h}','{$g}')"; 


foreach($querys as $sql) { 
    $ll = mysql_query($sql); 
    $error=mysql_error(); 
    if($error!='') { 
     print $sql."\n"; 
     die($error); 
    } 
} 
?> 
+0

检查了phpmyadmin中的sql ..作品.. – snitch182

-3

您已经结束插入语句有“双引号,但没有开始,你可以一次

INSERT INTO p (title,colum,ord,tex,search,count,order) VALUES ('$a','$b','$c','$d','$f','$h','$g'); 

,或者你可以写

("INSERT INTO p (title,colum,ord,tex,search,count,order) VALUES ('$a','$b','$c','$d','$f','$h','$g')"); 

尝试在你的代码

请注意 - 请不要在同一代码中使用mysqli和mysql,而应该使用mysqli PDO

+2

'''在字符串的前面。在任何情况下,缺少PHP字符串分隔符都不会导致MySQL错误。 – JJJ