PHP - SQL查询失败,似乎有效吗?

时间:2012-02-28 02:27:11

标签: php mysql sql

我正在使用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很棒。

5 个答案:

答案 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 ...

dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate

答案 4 :(得分:-1)

首先,如前所述,请清理您的疑问。

其次,在双引号内,不要对数组索引使用单引号。

WHERE unique='{$_GET['unique']}'

应该是

WHERE unique='{$_GET[unique]}'