首页 > 解决方案 > 如何滚动 PHP-Postgres SELECT FROM 查询的结果?

问题描述

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

这是执行查询的 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 命令行上看到它。

我认为这是一个基本问题,但我还没有找到答案。

谢谢你的帮助。

编辑:根据尼克的评论(如下),这是 print_r($stmt->errorInfo()); 返回的错误

Statement selectedArray
(
    [0] => 42703
    [1] => 7
    [2] => ERROR:  column "email_field" does not exist
LINE 1: ...SOR WITH HOLD FOR select * from tbl01 where email=email_fiel...
                                                        ^
)

最新消息,感谢尼克终于成功了(见下文):

Array
(
    [0] => 00000
    [1] => 
    [2] => 
)
1
Array
(
    [date] => 2019-08-27
    [0] => 2019-08-27
    [email] => janis@joplin.com
    [1] => janis@joplin.com
    [firstname] => Janis
    [2] => Janis
    [lastname] => Joplin
    [3] => Joplin
    [password] => pwdph
    [4] => pwdph
    [comments] => pwdph
    [5] => pwdph
    [sendupdates] => Yes
    [6] => Yes
)

标签: phppostgresql

解决方案


您的查询字符串有问题,您没有正确声明参数,应该是:email_field

$sql = "select * from tbl01 where email=:email_field";

此外,您在传递给的数组中有太多变量execute。只有查询中实际使用的值才应该在其中,因此请删除该password值。

另请注意,$rowinwhile($row = $stmt->fetch(PDO::FETCH_ASSOC))是一个数组,因此您将需要print_rorvar_dump它,echo $row;将简单地输出Array


推荐阅读