gpt4 book ai didi

php - 使用 PHP PDO 查询选择 2 列

转载 作者:行者123 更新时间:2023-11-29 04:06:44 25 4
gpt4 key购买 nike

我是 PHP 和 PDO 的新手,我正在尝试制作一个简单的登录系统。现在,我正在尝试从我的表中获取 ID 和密码,以与用户输入的密码进行比较(我正在使用一种加盐加密方式)。所以,现在的问题是,当我只执行 $password = $stmt->fetchColumn(1) 时,我的登录系统可以正常工作。现在,当我尝试通过在 $password 之前执行 $id = $stmt->fetchColumn(0) 来获取 id 时,我无法登录再也没有了,我得到了“错误的用户名/密码”错误。

现在我很确定我对 fetchColumn 做错了什么,但我无法弄清楚。

这是一个有效的代码片段:

$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
//set how pdo will handle errors
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
//this would be our query.
$sql = "SELECT id, password FROM user_admin WHERE email = :email";

//prepare the statements
$stmt = $con->prepare( $sql );
//give value to named parameter :email
$stmt->bindValue( "email", $this->email, PDO::PARAM_STR );
$stmt->execute();

$password = $stmt->fetchColumn(1);

现在以下不起作用。请注意,当我添加 $id 时会发生这种情况:

$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
//set how pdo will handle errors
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
//this would be our query.
$sql = "SELECT id, password FROM user_admin WHERE email = :email";

//prepare the statements
$stmt = $con->prepare( $sql );
//give value to named parameter :email
$stmt->bindValue( "email", $this->email, PDO::PARAM_STR );
$stmt->execute();


$id = $stmt->fetchColumn(0); //That's the problem
$password = $stmt->fetchColumn(1);

非常感谢任何帮助。

最佳答案

来自documentation :

PDOStatement::fetchColumn — Returns a single column from the next row of a result set

每次您调用 fetchColumn 时,它都会前进到结果集的下一行。

尝试使用 PDOStatement::fetch而是将整行作为数组获取,然后从那里访问值。

$stmt->execute();
$row = $stmt->fetch();
$id = $row[0];
$password = $row[1];

关于php - 使用 PHP PDO 查询选择 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33203565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com