update - php的pdo




PDO数据库访问WHERE title=$ title (4)

我试图学习如何使用PDO而不是MySQLi来访问数据库,而且我无法从数据库中选择数据。 我想用:

$STH = $DBH->query('SELECT * FROM ratings WHERE title=$title ORDER BY date ASC');
$STH->setFetchMode(PDO::FETCH_ASSOC);

while($row = $STH->fetch()) {
    echo $row['title']; 
}

但我得到这个错误:

致命错误:在第6行的/home/owencont/public_html/owenstest.com/ratemystudents/index.php中的非对象上调用成员函数setFetchMode()

如果我拿出WHERE语句,它工作正常。 如何根据值是否与变量匹配来选择行?

谢谢,

欧文


从sql语句中删除变量,因为它的一个php变量

$STH = $DBH->query('SELECT * FROM ratings WHERE title=' . $title . 'ORDER BY date ASC');

使用双引号而不是单引号作为查询方法的参数。

你得到这个错误的原因是因为查询方法失败,所以没有创建$ STH对象。 你应该实现一些错误处理。


这可能是一个SQL语法错误,因为你忘了引用$title 。 它在查询中作为空白字符(甚至没有插入字符串),导致错误。 而您的PDO连接未配置为报告错误。 在 - > query()之前使用 - > quote()参数:

$title = $DBH->quote($title);
$STH = $DBH->query("SELECT * FROM ratings WHERE title=$title ");

或者更好的是,使用参数化的SQL:

$STH = $DBH->prepare("SELECT * FROM ratings WHERE title=? ");
$STH->execute(array($title));