php - PDO参数绑定(bind)导致异常

标签 php mysql session pdo

我正在尝试绑定(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/

相关文章:

javascript - 如何在没有cookie的情况下使用客户端数据创建 session ?

php - 验证用户输入的质量

java - 使用变量的 SQL 插入查询语法错误

SQL 查询返回相对顺序的 int 列

php - OAuth 和 Cookie

php - Laravel 5.1 中 session 不保存

javascript - 在 foreach 语句的数组中包含空值

php - TYPO3 扩展库 : setDefaultOrderings in Controller

java - php ssh2_exec不执行java命令

MySQL日期结果按日期分割