我正在使用XMLHttpRequests在我的服务器上调用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";
我觉得我错过了一个非常小但非常重要的部分。我最初尝试使用IF EXISTS,但我一直遇到同样的问题,所以我试图将它简化为语句排序后的语句。老实说,谢谢你的帮助。 StackOverflow很棒。
答案 0 :(得分:2)
唯一是保留字,请参阅:dev.mysql.com/doc/refman/5.5/en/reserved-words.html
要么避开它,最好的选择,要么将其包裹在后面的滴答声中
答案 1 :(得分:0)
unique是一个保留关键字,如上所述,使用(``),如:
WHERE `unique`='{$_GET['unique']}'
答案 2 :(得分:0)
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";
}
答案 3 :(得分:0)
使用INSERT INTO ... ON DUPLICATE KEY UPDATE ...
答案 4 :(得分:-1)
首先,如前所述,请请清理您的疑问。
其次,在双引号内,不要对数组索引使用单引号。
WHERE unique='{$_GET['unique']}'
应该是
WHERE unique='{$_GET[unique]}'