0

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

$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

4 回答 4

0

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

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

例如

INSERT INTO `Items` (`name`, `price`) VALUES ('Beans', 0.40);
于 2012-12-27T01:42:31.557 回答
0

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

INSERT INTO `Items` SET name='Beans', price='0.40'
于 2012-12-27T01:45:25.380 回答
0

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

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

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

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

于 2012-12-27T02:02:47.807 回答
0

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

于 2013-05-22T00:31:00.413 回答