PDO更新语句不更新记录

时间:2014-06-29 18:49:10

标签: mysql pdo sql-update

我只是想知道我是否可以得到一些关于我可能出错的地方。

我一直在使用mysql语句,我正在切换到用于MySQL的PDO语句。

我已经能够了解SELECT语句,但是我在尝试使用insert语句时遇到了一些麻烦。

我一直在使用谷歌搜索并尝试了几种不同的方法来实现这一点,但无济于事。

这是我到目前为止所做的:

$sqlu = $conn->prepare("UPDATE ".PERSON." p
                    JOIN contact c ON c.personID = p.adbkid 
                    JOIN address a ON a.personID = p.adbkid 
                    JOIN misc m ON m.personID = p.adbkid
                    JOIN variables v ON v.personID = p.adbkid
                    SET lastname = :ln
                    WHERE p.pid = :id");

            $sqlu->bindParam(':ln', $ln, PDO::PARAM_STR);
            $sqlu->bindParam(':id', $id, PDO::PARAM_STR);

            $sqlu->execute();

我也尝试过它而不使用bindParam并使用如下:

$sqlu->execute(array('ln' => $ln, 'id' => $id));
我还用过'?'而不是':'然后绑定参数或在数组中使用它。

当我点击更新按钮时,我已经回复了查询,所以我可以看到正在传递的内容,这就是我得到的内容:

PDOStatement Object ( [queryString] => UPDATE person p JOIN contact c ON c.personID = p.adbkid JOIN address a ON a.personID = p.adbkid JOIN misc m ON m.personID = p.adbkid JOIN variables v ON v.personID = p.adbkid SET lastname = :ln WHERE p.pid = :id ) 1

我只是看不出我错在哪里。就像我说的那样,我已经用Google搜索了这里,并且在这里也遇到了一些答案,而且我似乎对下一步的去向感到困惑。

这是我正在研究的个人项目,我不是在寻找有人为我解决这个问题,我只是在寻找一些指示,所以我可以尝试修复和学习自己。

提前致谢。

2 个答案:

答案 0 :(得分:1)

一种可能性是记录在所有表中都没有匹配的记录。您可以尝试使用left join。但是你为什么要加入呢?这有用吗?

UPDATE ".PERSON." p
   SET lastname = :ln
   WHERE p.pid = :id;

这假设lastnamePerson表中,但这似乎是一个合理的假设。

答案 1 :(得分:0)

我已经浏览了所有内容,看起来查询的回显显示了占位符的查询,它实际上正在更新数据库。