我有以下代码集,根据下面查询语句中的条件从数据库中读取和输出特定行。但是,当我尝试在控制台中记录输出时,我只能获得一个值,而它在数据库中存在(作为键属性),每次都是从第一行开始。我没有得到符合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;
}
}
答案 0 :(得分:0)
您需要使用循环来获取查询返回的所有行:
while( $results = $userInfoQuery->fetch(PDO::FETCH_ASSOC) ) {
echo $results;
}
PDOStatement::fetch
函数的文档说明函数“从结果集中获取下一行”,因此它只返回一行。如果PDOStatement::fetchAll
函数将返回完整的结果集。