为什么mysql查询工作phpmyadmin但错误的PHP

时间:2013-03-01 09:05:31

标签: mysql sql phpmyadmin php

我有一个sql查询,可以在phpmyadmin上运行而没有问题但SQL语法错误在php mysql_Query

查询:

   SELECT `_id` INTO @task_id  
   FROM `SepidarSoft_Portal`.`Permission` 
   WHERE `FID`='1' and `GID`='Request' and `Permission`='Client' ;

   INSERT INTO `SepidarSoft_Portal`.`Permission` 
   SET `_id`=@task_id,`CTime`='1362128156',`CUser`='1',`FID`='1',`KFID`='0',`GID`='Request',`KGID`='1',`Permission`='Client',`Expired`='0',`Direction`='1',`Access`='200',`State`='1' 
   ON DUPLICATE KEY UPDATE `CTime`='1362128156',`CUser`='1',`FID`='1',`KFID`='0',`GID`='Request',`KGID`='1',`Permission`='Client',`Expired`='0',`Direction`='1',`Access`='200',`State`='1'

mysql_query显示此错误

  

添加您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'INSERT INTO SepidarSoft_Portal附近使用正确的语法。Permission SET _id = @ task_id,CTime ='13621'在第2行

任何人都知道问题是什么?

5 个答案:

答案 0 :(得分:2)

  

<强> mysql_query

     

mysql_query()发送唯一查询(多个查询不是   支持)到服务器上当前活动的数据库   与指定的link_identifier相关联。

因此请单独执行您的陈述,这样更安全。

或者,如果您坚持使用mysql_*扩展程序,则可以使用mysqli_multi_query()

  

<强> mysqli_multi_query

     

执行一个或多个由a连接的查询   分号。

但最好切换到PDOmysqli_*分机。 {@ 1}}已被弃用。

答案 1 :(得分:1)

您需要在单独的命令中执行这两个查询。另请注意那些建议您使用mysql_query()的人,因为已弃用。请改用mysqli_query()PDO函数。

答案 2 :(得分:0)

您需要在PHP中将它们作为2个单独的SQL查询运行。因此,使用2个mysql_query()语句,您将不再收到错误。

此外,您应该将代码升级为不再使用mysql_语句,因为它们已被弃用,但要使用mysqli或PDO。

答案 3 :(得分:0)

原因如下:

  

mysql_query()发送一个唯一的查询(多个查询不是   支持)到服务器上当前活动的数据库   与指定的link_identifier相关联。

请注意:尽量避免MySQL扩展,尝试使用PDO或预备语句。

答案 4 :(得分:0)

你必须在下面使用:

INSERT INTO epidarSoft_Portal`.`Permission
         (column1, column2, column3, column4)
     VALUES
         ('" . $val1 . "',  '" . $val2 . "', '" . $val3 . "', '" . $val4 . "')
     ON DUPLICATE KEY UPDATE
         column2='" . $val2 . "',
         column3='" . $val3 . "',
         column4='" . $val4 . "'"
 );