我试图绑定一个参数,以便我可以根据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" } }
我想我的问题在技术上是一个由两部分组成的问题。非常感谢。
答案 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;
}