Php PDO查询有问题(注意:未定义索引)
我是PHP领域的新手,这里需要一些帮助 我正在尝试从数据库中提取数据,我正在使用PDO来完成 我有以下PHP代码,但没有成功:Php PDO查询有问题(注意:未定义索引),php,pdo,Php,Pdo,我是PHP领域的新手,这里需要一些帮助 我正在尝试从数据库中提取数据,我正在使用PDO来完成 我有以下PHP代码,但没有成功: public function CheckIdentity($email, $password) { $usersArray = []; $SQL = " SELECT * FROM usuario WHERE email='".$email."' AND password='".$password."' "; $resultBySQL = $
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);
}
}
当我打印它时,我会得到以下信息(对于每个属性):
注意:未定义索引:电子邮件等
另外,当我只应用$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']);
//...
}
当您这样做时:
$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']);
//...
}
在这种情况下,尝试使用fetch
而不是fetchAll
。在这种情况下,尝试使用fetch
而不是fetchAll
。将错误报告(1)放在顶部以检查错误我不知道,我现在正在检查。谢谢你@anujnehra!请使用准备好的语句和占位符,而不是“$email”。
,$email
和$password
的值是多少?数据库中是否存在此数据,连接是否打开等。您会遇到什么错误。这是在课堂上,看起来是的。它有名称空间吗?如果您需要\PDO::FETCH_ASSOC
我已经检查过了,我得到了以下信息:注意:未定义的索引:电子邮件等…发布您得到的信息将错误报告(1)放在顶部检查错误我不知道,我现在正在检查。谢谢你@anujnehra!请使用准备好的语句和占位符,而不是“$email”。
,$email
和$password
的值是多少?数据库中是否存在此数据,连接是否打开等。您会遇到什么错误。这是在课堂上,看起来是的。它有名称空间吗?如果您需要\PDO::FETCH_ASSOC
我已经检查过了,我得到了以下信息:注意:未定义索引:电子邮件等…发布您得到的信息