gpt4 book ai didi

php - 遇到 PDO 查询问题(通知 : Undefined index)

转载 作者:行者123 更新时间:2023-12-02 17:32:22 26 4
gpt4 key购买 nike

我正在尝试从数据库中提取数据,我正在使用 PDO 来完成它。

我有以下 PHP 代码但没有成功:

public function CheckIdentity($email, $password) {
$usersArray = [];

$SQL = " SELECT * FROM usuario WHERE email='".$email."' AND password='".$password."' ";
$resultBySQL = $this->dbConnected->query($SQL);

while ($row = $resultBySQL->fetchAll(PDO::FETCH_ASSOC)) {
//$row = $resultBySQL->fetchAll(PDO::FETCH_ASSOC);
$user = new User();
$user->setUsername($row['username']);
$user->setEmail($row['email']);
$user->setPassword($row['password']);
$user->setRole($row['role']);
$user->setPersonalInfo($row['personal_info']);
print_r($user);

array_push($usersArray, $user);
}
}

当我打印它时,我得到以下信息(对于每个属性):

注意: undefined index :email, etc, etc...

此外,当我只应用 $row = $resultBySQL->fetchAll(PDO::FETCH_ASSOC);

我总是得到这个:

User Object ( [username:User:private] => [email:User:private] => [password:User:private] => [role:User:private] => [personalInfo:User:private] => )

顺便说一下,我已经尝试应用一个代码,但效果不错:

foreach ($resultBySQL as $row) { /* Extract the info */ }

但是现在,对于这个例子......它不起作用。

另一方面,我检查了数据库中的查询和 PDO 连接,它们工作正常。

怎么了?你有什么想法吗?

最佳答案

当你这样做时:

$row = $resultBySQL->fetchAll(PDO::FETCH_ASSOC);

你一次获取所有结果,你得到一个数组的数组。由于您是在 while 条件下进行此调用,因此您在第一次迭代中创建了整个结果的数组,然后代码在第二次迭代中退出,因为没有更多要获取的内容,因为所有结果都已获取在第一次迭代中。

你应该使用:

//notice the 'fetch' in place of 'fetchAll'
while ( $row = $resultBySQL->fetch(PDO::FETCH_ASSOC); )
{
$user = new User();
$user->setUsername($row['username']);

//...
}

每次迭代只获取一行,然后你可以在 while 循环中访问它的内容

或者,您可以一次获取所有行,然后循环遍历结果:

$rows = $resultBySQL->fetchAll(PDO::FETCH_ASSOC);

foreach( $rows as $row )
{
$user = new User();
$user->setUsername($row['username']);

//...
}

关于php - 遇到 PDO 查询问题(通知 : Undefined index),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31634052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com