2017-07-22 33 views
-1

我试图从这个视频https://www.youtube.com/watch?v=DHUxnUX7Y2Y在PHP中实现后端RESTful API。SQLSTATE [42000]使用bindParam时

​​ 时,我想使用bindParam我总是得到一个错误

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':id' at line 1

服务器使用MySQL“服务器版本:36年6月5日日志 - 源代码分发”

+0

您不能使用占位符表名。 – Mikey

+0

@Mikey谢谢,我刚更新了WHERE id =:id – Zoybe

+0

的示例代码,哪个API用于连接? –

回答

2

如果这是使用PDO,使用准备好的语句而不是查询。这意味着调用prepareexecute而不是query

我已经更新了你的代码如下为例:

$stmt = $db->prepare($sql); 
    $stmt->bindParam(':id', $id); 
    $stmt=>execute(); 
    $customers = $stmt->fetch(PDO::FETCH_OBJ); 

您可能还需要考虑使用的bindValue代替bindParam简化在这种情况下,你的代码。 bindParam在通过引用传递语句来执行语句时计算$id的值,如果该ID不会更改,似乎不需要,所以bindValue就足够了。

参考手册:

+0

我很想知道为什么你删除了我之前编辑中添加的引用链接https://stackoverflow.com/revisions/45254605/2 –

+0

我的错,@ Fred-ii-。我正在编辑,我必须覆盖你的修改。它现在应该回来了。 – Anton

+0

没问题。那么,它就像OP的“AWOL”一样。我早些时候离开了[评论](https://stackoverflow.com/questions/45254495/sqlstate42000-when-using-bindparam#comment77473433_45254495),但没有收到任何回复,也没有在你的问题下发表评论。主作为我的见证人我试过*大声笑* –

相关问题