为什么mysql查询在phpmyadmin上工作,但在php上出错


why mysql query work on phpmyadmin but error on php

我有一个在phpmyadmin上运行的sql查询没有问题,但在php-mysql_query 上出现sql语法错误

查询:

   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在第2行设置_id=@task_id,CTime='13621'

有人知道问题出在哪里吗?

mysql_query

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

因此,单独执行您的语句,这样更安全。

或者,如果你坚持使用mysql_*扩展,你可以使用mysqli_multi_query()

mysqli_multi_query

执行一个或多个由分号。

但您最好切换到PDOmysqli_*分机。mysql_*已弃用。

您需要在单独的命令中执行这两个查询。此外,不要听从那些建议您使用mysql_query()的人的意见,因为这是不推荐使用的。请改用mysqli_query((或PDO函数。

您需要在PHP中将它们作为两个独立的sql查询来运行。因此,使用2个mysql_query((语句,您将不再得到错误。

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

原因如下:

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

注意:尽量避免MySQL扩展,尽量使用PDO或prepared语句。

您必须使用以下内容:

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