我从jQuery调用一个简单的Postgres数据库查找函数。我在Postgres中使用SELECT FROM查询。我希望验证输入密码是否与记录中的密码匹配,并将yes或no返回给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;
?>以上各行正确执行。echo“选择的语句”;显示在dev控制台中,但不显示来自:
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo $row; }因此,我的问题是如何从这个查询中检索行(一个接一个)?我知道表中有一行与我要发送的查询匹配,因为当我直接发出查询时,我可以在Putty命令行上看到它。
我认为这是一个基本的问题,但我还没有找到答案。
谢谢你的帮助。
编辑:根据Nick (下面)的注释,这是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...
^
)最近的消息,终于成功了,多亏了Nick (请参阅下面):
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
)发布于 2019-08-28 23:15:08
查询字符串有问题,没有正确声明参数,应该是:email_field
$sql = "select * from tbl01 where email=:email_field";而且,数组中传递给execute的变量太多了。只有查询中实际使用的值才应该在其中,因此移除password值。
还请注意,$row在while($row = $stmt->fetch(PDO::FETCH_ASSOC))中是一个数组,所以需要print_r或var_dump,echo $row;只需输出Array。
https://stackoverflow.com/questions/57701016
复制相似问题