首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何滚动Postgres从查询中选择的结果?

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

Stack Overflow用户
提问于 2019-08-28 23:04:02
回答 1查看 116关注 0票数 0

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

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

代码语言:javascript
复制
// 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;

?>

以上各行正确执行。echo“选择的语句”;显示在dev控制台中,但不显示来自:

代码语言:javascript
复制
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo $row; }

因此,我的问题是如何从这个查询中检索行(一个接一个)?我知道表中有一行与我要发送的查询匹配,因为当我直接发出查询时,我可以在Putty命令行上看到它。

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

谢谢你的帮助。

编辑:根据Nick (下面)的注释,这是print_r返回的错误($stmt->errorInfo());

代码语言:javascript
复制
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...
                                                        ^
)

最近的消息,终于成功了,多亏了Nick (请参阅下面):

代码语言:javascript
复制
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
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-28 23:15:08

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

代码语言:javascript
复制
$sql = "select * from tbl01 where email=:email_field";

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

还请注意,$rowwhile($row = $stmt->fetch(PDO::FETCH_ASSOC))中是一个数组,所以需要print_rvar_dumpecho $row;只需输出Array

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57701016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档