我试图绑定一个参数,以便我可以根据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" } }
您需要更改查询以反映此处每个文档的pdo绑定参数结构
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;
}
我认为你想要prepare()
而不是query()
:
$result = $db->prepare("SELECT id FROM user_info WHERE username = :user");
$result->bindParam(':user', $username);
$result->execute();