【发布时间】:2009-12-22 13:47:44
【问题描述】:
我是 PHP 和 PDO 的新手,我尝试在这里使用准备好的语句。经过1小时的尝试,我放弃了。或者我的教程太糟糕了。
编辑:
这在没有准备好的语句的情况下完美地工作:
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
$prepared = $dbh->prepare('SELECT * from sys_navigation_point WHERE name="root"');
//$prepared->bindParam('foo', 'root');
$prepared->execute();
foreach($prepared as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
但这对于准备好的语句根本不起作用。这样做时得到一个完全空白的页面:
try {
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
$prepared = $dbh->prepare('SELECT * from sys_navigation_point WHERE name=:foo');
$prepared->bindParam('foo', 'root');
$prepared->execute();
foreach($prepared as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
foo 应该替换为 root。但是,它没有。
【问题讨论】:
-
您似乎接受了一个错误的答案,而忽略了真正的答案(您在 bindParam
$prepared->bindParam(':foo', 'root')中缺少一个 :)
标签: php pdo prepared-statement