gpt4 book ai didi

php - 在 PHP 中使用 PDO 在单个查询中获取行数和该行的数据

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

我有一个登录系统,最初我检查用户名/密码组合是否正确,然后获取列以设置 session 变量

这是我的代码

$sql='select uid,name from users where username=? and password=?';
$query=$con->prepare($sql);
$result=$query->execute(array($username,$password));
$query->setFetchMode(PDO::FETCH_ASSOC);

//check if a single row is returned

if(($query->fetchColumn())===1)
{
//set session variables
header('Location: lading_page.php');
}
else echo "Invalid username/password";

1) fetchColumn() 给出的错误结果为 3(尽管我有单行匹配该参数并且每行 15 个库)而如果 $sql

$sql='select count(*) from users where username=?密码=?';

给出的正确答案是 1 为什么?

2) 我看到了 php 手册,我发现 rowCount() 只对 DML 查询有保证,它建议 workaround for SELECT但每次登录需要 2 次查询。

有什么方法可以使用单个查询吗?

编辑

现在我正在使用类似的东西,它似乎工作正常但问题很少。请参阅评论

$sql='select uid,name from users where username=? and password=?';
$query=$con->prepare($sql);
$result=$query->execute(array($username,$password));

$rows= $query->fetchAll(PDO::FETCH_ASSOC);
if(count($rows)===1)
{
//I reached here
echo $_SESSION['id']=$rows['uid']; //undefined index uid
echo $_SESSION['name']=$rows['name'];//undefined index name
//header('Location: landing_page.php');
}
else $error="Invalid username/password";

最佳答案

希望我没说错。

用全取试试

$rows = $query->fetchAll(PDO::FETCH_ASSOC);

在你的情况下

$sql='select uid,name from users where username=? and password=?';
$query=$con->prepare($sql);
$result=$query->execute(array($username,$password));


// check if a single row is returned
// i guess to avoid the warnings you can just set the array befor like
// $row = array();
// or put @ befor the VARS in the TRUE statement

$rows = $query->fetchAll(PDO::FETCH_ASSOC));

/**
if you have more than one result you can look at them like this

foreach ($rows as $row)
{
echo $row['uid'];
}
**/

if((count($rows)===1)
{
echo $_SESSION['id']=@$rows['uid'];
echo $_SESSION['name']=@$rows['name'];
// header('Location: lading_page.php');
}
else echo "Invalid username/password";

关于php - 在 PHP 中使用 PDO 在单个查询中获取行数和该行的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21382441/

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