我正在尝试绑定(bind)一个参数,以便我可以根据 WHERE
子句查询数据库,该子句检查存储在 SESSION
中的用户用户名.用户名肯定存储在 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 替换 :user 然后执行 echo $user_info
它不会返回任何东西,但是当我执行 var_dump( $user_info);
它显示以下内容; array(1) { [0]=> array(1) { ["id"]=> string(2) "59"} }
我想我的问题在技术上是一个由两部分组成的问题。非常感谢帮助。
最佳答案
您需要更改查询以在此处反射(reflect)每个文档的 pdo 绑定(bind)参数结构
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;
}
关于php - PDO参数绑定(bind)导致异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24441705/