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

时间:2014-11-05 11:11:06

标签: 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。:报价未转义或我的数据库中的任何内容。

1 个答案:

答案 0 :(得分:2)

可能导致您有整数类型的字段并使用

发送字符串尝试
$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;
}