PDO参数绑定导致异常

时间:2014-06-26 23:17:30

标签: php mysql session pdo

我试图绑定一个参数,以便我可以根据WHERE子句查询数据库,该子句检查用户的用户名,该用户名存储在SESSION中。用户名肯定存储在会话中,因为我可以在var_dump($_SESSION)时看到它,所以我知道这是问题的原因。

我得到了异常,而不是返回id。当我为:user更改'Maverick'时(显然是数据库中的有效用户名),它将返回id。有什么想法吗?

$username = $_SESSION['username'];

try {
    $result = $db->query("SELECT id FROM user_info WHERE username = :user");
    $result->bindParam(':user', $username);
    $result->execute();
    $user_info = $result->fetchAll(PDO::FETCH_ASSOC);
} 

catch (Exception $e) {
    echo "Could not retrieve user's ID";
    exit;
}

不确定它是多么相关,但是当我确实替换:使用Maverick的用户然后执行echo $user_info时它不会返回任何内容,但当我执行var_dump($user_info);时它会显示以下; array(1) { [0]=> array(1) { ["id"]=> string(2) "59" } }

我想我的问题在技术上是一个由两部分组成的问题。非常感谢。

2 个答案:

答案 0 :(得分:2)

我认为你想要prepare()而不是query()

$result = $db->prepare("SELECT id FROM user_info WHERE username = :user");
$result->bindParam(':user', $username);
$result->execute();

答案 1 :(得分:2)

您需要更改查询以反映每个doc的pdo bind param结构 http://www.php.net//manual/en/pdostatement.bindparam.php

$username = $_SESSION['username'];

try {
    $result = $db->prepare("SELECT id FROM user_info WHERE username = :user");
    $result->bindParam(':user', $username);
    $result->execute();
    $user_info = $result->execute();
} 

catch (Exception $e) {
    echo "Could not retrieve user's ID";
    exit;
}