Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO查询有问题(注意:未定义索引)_Php_Pdo - Fatal编程技术网

Php PDO查询有问题(注意:未定义索引)

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 = $

我是PHP领域的新手,这里需要一些帮助

我正在尝试从数据库中提取数据,我正在使用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);
    }
}
当我打印它时,我会得到以下信息(对于每个属性):

注意:未定义索引:电子邮件等

另外,当我只应用
$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
我已经检查过了,我得到了以下信息:注意:未定义索引:电子邮件等…发布您得到的信息