php - 带引号的 SQL 查询不返回结果

标签 php mysql pdo

我正在尝试使用 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/

相关文章:

php - 无法在数据库 $count 中写入数据!= 1

javascript - PHP FTP 上传 BLOB TEMP 图像

php - 使用数据表加载叠加层

mysql - Doctrine 1.2 无法获取数据?

php - mysql 事件的替代方案(不是 Cronjob)

mysql - select ... where foo_id in (select id from ...) 效率

mysql - 反序列化 pdo mysql 错误 - 数据源名称无效

php - if elseif 语句导致输入字段强制使用选项值

php - mysql PHP PDO 在单个 POST 请求上执行 2 个查询

php - MySQL UNION ALL 与 LEFT JOIN