我使用XMLHttpRequest在服务器上调用PHP脚本,但查询一直失败。我已经重写了好几次了,我是不是搞错了?我研究了一些语句,并看到它们以非常相似的方式书写。
$query = mysql_query("UPDATE arts SET a_id=((SELECT a_id FROM logs
WHERE unique='{$_GET['unique']}') + ',' + (SELECT id
FROM mf_arts WHERE art='{$_GET['url']}'))
WHERE unique='{$_GET['id']}'");
if(!$query)
{
$fquery = mysql_query("INSERT INTO mf_arts (art,name)
VALUES('{$_GET['url']}','{$_GET['name']}');
UPDATE mf_logs SET a_id=((SELECT a_id FROM mf_logs
WHERE unique='{$_GET['id']}') + ',' + (SELECT id FROM
mf_arts WHERE art='{$_GET['url']}'))
WHERE unique='{$_GET['id']}'");
if(!$fquery) echo("ADD IMPOSSIBRU");
} else echo "1";
我觉得我错过了一个很小,但很重要的部分。我最初尝试使用IFEXISTS,但一直遇到同样的问题,所以我试图将其简化为一个接一个的语句层次结构。老实说,谢谢你的帮助。StackOverflow非常棒。
unique是一个保留字,请参阅:dev.mysql.com/doc/refman/5.5/en/rereserved-words.html
要么避开它,最好的选择,要么用反勾号包裹它
mysql_query中不允许有多个查询。清除用户输入后,尝试将它们分离为
if(!$query)
{
mysql_query("INSERT INTO mf_arts (art,name)
VALUES('{$_GET['url']}','{$_GET['name']}')")
or die("ADD IMPOSSIBRU");
mysql_query("UPDATE mf_logs SET a_id=((SELECT a_id FROM mf_logs
WHERE `unique`='{$_GET['id']}') + ',' + (SELECT id FROM
mf_arts WHERE art='{$_GET['url']}'))
WHERE `unique`='{$_GET['id']}'")
or die("ADD IMPOSSIBRU - Update");
echo "1";
}
unique是一个保留关键字,如上所述,使用(``),如:
WHERE `unique`='{$_GET['unique']}'
使用INSERT INTO。。。正在进行重复密钥更新。。。
dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate
首先,如前所述,请请清理您的查询。
其次,在双引号中,不要对数组索引使用单引号。
WHERE unique='{$_GET['unique']}'
应该是
WHERE unique='{$_GET[unique]}'