我只是想知道我是否可以得到一些关于我可能出错的地方。
我一直在使用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搜索了这里,并且在这里也遇到了一些答案,而且我似乎对下一步的去向感到困惑。
这是我正在研究的个人项目,我不是在寻找有人为我解决这个问题,我只是在寻找一些指示,所以我可以尝试修复和学习自己。
提前致谢。
答案 0 :(得分:1)
一种可能性是记录在所有表中都没有匹配的记录。您可以尝试使用left join
。但是你为什么要加入呢?这有用吗?
UPDATE ".PERSON." p
SET lastname = :ln
WHERE p.pid = :id;
这假设lastname
在Person
表中,但这似乎是一个合理的假设。
答案 1 :(得分:0)
我已经浏览了所有内容,看起来查询的回显显示了占位符的查询,它实际上正在更新数据库。