如何滚动PHP Postgres从查询中选择的结果?
我从jQuery调用一个简单的PHP Postgres数据库查找函数。我在Postgres中使用SELECT FROM查询。我想验证输入的密码是否与记录中的密码匹配,并向jQuery返回yes或no。为此,我需要滚动查询结果 下面是执行查询的PHP程序的一部分:如何滚动PHP Postgres从查询中选择的结果?,php,postgresql,Php,Postgresql,我从jQuery调用一个简单的PHP Postgres数据库查找函数。我在Postgres中使用SELECT FROM查询。我想验证输入的密码是否与记录中的密码匹配,并向jQuery返回yes或no。为此,我需要滚动查询结果 下面是执行查询的PHP程序的一部分: // Query the database $email_field = $_POST['email_field']; $password = $_POST['password']; try { $email_fi
// Query the database
$email_field = $_POST['email_field'];
$password = $_POST['password'];
try {
$email_field = $_POST['email_field'];
$password = $_POST['password'];
$data = [
'email_field' => $email_field,
];
$sql = "select * from tbl01 where email=:email_field";
$stmt= $pdo->prepare($sql,[PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
$stmt->execute($data);
echo "Statement selected";
print_r($stmt->errorInfo());
$no=$stmt->rowCount();
echo " No of records = ".$no;
echo PHP_EOL;
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row;
echo PHP_EOL; }
} catch (PDOException $e) {
error_log($e->getMessage());
}
$pdo = null;
?>
上面的行执行正确。回显“所选语句”;在开发人员控制台中显示,但没有来自以下位置的回显:
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo $row; }
所以我的问题是如何从这个查询中检索行(一行一行)?我知道表中有一行与我发送的查询匹配,因为当我直接发出查询时,我可以在Putty命令行上看到它
我认为这是一个基本问题,但我还没有找到答案
谢谢你的帮助
编辑:根据Nick的评论(如下),这是print\r($stmt->errorInfo())返回的错误
最新消息,感谢Nick最终成功(见下文):
您的查询字符串有问题,您没有正确声明参数,它应该是
:email\u field
:
$sql = "select * from tbl01 where email=:email_field";
此外,传递给execute
的数组中的变量太多。只有查询中实际使用的值才应该在那里,因此请删除密码
值
还要注意,
中的$row
,而($row=$stmt->fetch(PDO::fetch\u ASSOC))
是一个数组,因此您需要打印\u r
或变量转储
它,回送$row
将只输出数组
查询字符串有问题,您没有正确声明参数,它应该是:email\u字段
:
$sql = "select * from tbl01 where email=:email_field";
此外,传递给execute
的数组中的变量太多。只有查询中实际使用的值才应该在那里,因此请删除密码
值
还要注意,
中的$row
,而($row=$stmt->fetch(PDO::fetch\u ASSOC))
是一个数组,因此您需要打印\u r
或变量转储
它,回送$row
将只输出数组
为什么要将整行作为输出发送?至少你会泄露密码散列,更不用说其他PII可能在那里。我现在正在测试和开发。解决此问题后,我将处理安全问题。为什么要将整行作为输出发送?至少你会泄露密码散列,更不用说其他PII可能在那里。我现在正在测试和开发。解决此问题后,我将处理安全问题。评论不用于扩展讨论;此对话已结束。评论不用于扩展讨论;这段对话已经结束。
$sql = "select * from tbl01 where email=:email_field";