我有一个在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
执行一个或多个由分号。
但您最好切换到PDO
或mysqli_*
分机。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 . "'"
);