为什么第二个查询不起作用?

时间:2012-12-27 01:34:01

标签: php sql ajax

我使用ajax调用php文件来执行sql查询。 当用户按下按钮时,php文件会执行一些查询,包括一次选择和两次插入。 当用户第一次按下按钮时,它工作正常。在第二次,只有select查询和第一个插入查询工作,第二个插入查询不插入任何内容。我查了一下查询,一切都很好。似乎由于某种原因没有执行第二个插入查询。

$itemquery = "insert into `Items` values (...)";
if($affected_rows = $db->exec($itemquery) ){
    ...
    $pickupquery = "insert into `Pickup` values (...)";
    if ($affected_rows2 = $db->exec($pickupquery)) {
        echo "success";
    }
    else echo "No pickup is inserted";
}

我第一次按下按钮,两个查询都正常工作(输出“成功”)。项目被插入表格中。 但是第二次按下它时,只有$ itemquery工作,$ pickupquery没有插入任何东西(输出“没有插入拾取”)。 $ pickupquery本身没有任何问题,但我不知道为什么它在第一次按下后才起作用。

有什么想法吗?

4 个答案:

答案 0 :(得分:0)

您的SQL语法不正确。它应该是

INSERT INTO `Items` (COL_NAMES) VALUES (a, b,...)

例如

INSERT INTO `Items` (`name`, `price`) VALUES ('Beans', 0.40);

答案 1 :(得分:0)

你也可以像这样插入SQL(虽然我不确定这是好还是坏,但更容易):

INSERT INTO `Items` SET name='Beans', price='0.40'

答案 2 :(得分:0)

我认为我们没有足够的信息来回答这个问题。它可能是一个javascript问题,它可能是db上的唯一索引,它可以防止第二次插入或相同的值等。

要开始调试,您应该使用Firebug。使用Firebug,您应该复制使用Ajax调用的链接,并尝试直接从浏览器访问它。之后刷新页面以查看是否有任何错误,这应该模拟用Ajax按下按钮2次。

使用difebug检查ajax调用是否正在调用正确的页面并且调用它2次(每按一次按钮1次)。

然后检查为该主机定义的错误文件中是否有任何错误。

答案 3 :(得分:0)

我在数据库中将属性设置为唯一是一个愚蠢的错误,我试图插入一个重复的值,这导致了问题。代码没有任何问题。