好的,这是问题所在:
这个有效:
$STH = $DBH->prepare("SELECT * FROM juegos WHERE id = 1");
$STH->execute();
这不是:
$STH = $DBH->prepare("SELECT * FROM juegos WHERE id = :id");
$STH->bindParam(':id', '1', PDO::PARAM_STR);
$STH->execute();
我究竟做错了什么?它甚至不会抛出异常
谢谢大家!
另外,这是完整的代码
<?php
try {
$DBH = new PDO("everything is", "ok", "here");
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$STH = $DBH->prepare("SELECT * FROM juegos WHERE id = :id");
$STH->bindParam(':id', '1', PDO::PARAM_STR);
$STH->execute();
$STH->setFetchMode(PDO::FETCH_ASSOC);
while($row = $STH->fetch()) {
echo $row['nombre']."<br/>";
}
$DBH = null;
echo "Todo salió bien";
} catch (PDOException $e) {
echo "Error";
}
?>
最佳答案
使用 bindParam()
变量为 bound as a reference .
一个字符串 can't be passed by reference .
下面的东西可以通过引用传递:
Variables, i.e. foo($a)
New statements, i.e. foo(new foobar())
References returned from functions
尝试使用 bindValue()
$STH->bindValue(':id', '1', PDO::PARAM_STR);
关于php - 带有准备好的语句的 PDO bindParam() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19902078/