Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何滚动PHP Postgres从查询中选择的结果?_Php_Postgresql - Fatal编程技术网

如何滚动PHP Postgres从查询中选择的结果?

如何滚动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

我从jQuery调用一个简单的PHP Postgres数据库查找函数。我在Postgres中使用SELECT FROM查询。我想验证输入的密码是否与记录中的密码匹配,并向jQuery返回yes或no。为此,我需要滚动查询结果

下面是执行查询的PHP程序的一部分:

// 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";