在php中使用PDO时从mysql数据库读取数组的问题

时间:2014-09-21 03:30:16

标签: php mysql arrays pdo

我有以下代码集,根据下面查询语句中的条件从数据库中读取和输出特定行。但是,当我尝试在控制台中记录输出时,我只能获得一个值,而它在数据库中存在(作为键属性),每次都是从第一行开始。我没有得到符合SQL条件的行。有什么想法吗?

function getLoginInfo($email,$password){
    global $db_user, $db_password, $db_host, $db_name;

    if (isValidLogin($email,$password)){
        $dbconn = connectToDB($db_user, $db_password, $db_host, $db_name);
        $userInfoQuery = $dbconn->prepare("Select * from (Users as U inner join RegisteredUsers as R on U.UID = R.UID) where email = :email");
        $userInfoQuery->execute(array(":email"=> 'derp@gmail.com'));
        $results = $userInfoQuery->fetch(PDO::FETCH_ASSOC);     
        echo $results; //will return data in the form ["col1"=>rowdata,"col2"=>rowdata,..."colX"=>rowdata]
        }
    else{
        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

您需要使用循环来获取查询返回的所有行:

while( $results = $userInfoQuery->fetch(PDO::FETCH_ASSOC) ) { 
    echo $results;
}

PDOStatement::fetch函数的文档说明函数“从结果集中获取下一行”,因此它只返回一行。如果PDOStatement::fetchAll函数将返回完整的结果集。