我正在尝试使用 PDO 查询我的 sql 数据库。在某些情况下,我的查询中包含引号。
function getPageByPagid($pagid) {
$db = dbConnection();
$sql = "SELECT * FROM pages WHERE pagid='".$pagid."'";
$q = $db->prepare($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
$q->execute();
$results = $q->fetch();
return $results;
}
我正在使用的函数确实准备了我的 SQL,因此如果 $pagid 中包含引号,它仍然可以工作。现在,当没有引号时它可以工作,但当有引号时它仍然不起作用。为什么这不起作用?
P.S.:引号没有转义,也没有在我的数据库中进行任何转义。
最佳答案
可能导致您有整数类型的字段并尝试发送字符串
$sql = "SELECT * FROM pages WHERE pagid='$pagid'";
或者更好地使用占位符(PDO 标准)
function getPageByPagid($pagid) {
$db = dbConnection();
$sql = "SELECT * FROM pages WHERE pagid= :pagid";
$q = $db->prepare($sql);
$q->bindParam(':pagid', $pagid);
$q->setFetchMode(PDO::FETCH_ASSOC);
$q->execute();
$results = $q->fetch();
return $results;
}
关于php - 带引号的 SQL 查询不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26755746/