最近,我發現自己在這種困境,而我的編程應用程序的一大塊。 我得到以下錯誤:Cannot use object of type mysqli_result as array
但是,我的應用程序打開的結果到一個數組試圖要麼返回它或回聲它。代碼在方法定義內。是的,我已盡全力,包括搜索本網站,包括標記爲重複的所有問題。沒有awnsers。使用mysqli-> FETCH_ASSOC() - 無法使用類型mysqli_result的對象數組
下面是代碼後,我嘗試瞭解決方案:
public function lookupEmailByUsername($username)
{
$database = new mysqli(APP_DB_HOSTNAME, APP_DB_USERNAME, APP_DB_PASSWORD, APP_DB_DATABASE, APP_DB_PORT);
$database->select_db("users"); // better safe than sorry
$row = $database->query("SELECT * FROM `users` WHERE `username` = \"$username\";");
if($row->num_rows == 1){
$finalRow = $database->query("SELECT * FROM `users` WHERE `username` = \"$username\";");
$finalRow->fetch_array();
$finalresult = $finalRow['email'];
return $finalresult; // Line where error occurs
} else {
$Logger = new logger();
$Logger->logEvent("ERROR", "Could not find user $username for reverse lookup", true, 1);
return null;
}
}
logger()
是我的日誌類,它有沒有問題。
代碼之前,我想一個解決方案:
public function lookupEmailByUsername($username)
{
$database = new mysqli(APP_DB_HOSTNAME, APP_DB_USERNAME, APP_DB_PASSWORD, APP_DB_DATABASE, APP_DB_PORT);
$database->select_db("stories_users");
if(!$database->query("SELECT * FROM `users` WHERE `username` = \"$username\";")){
$logger = new logger();
$logger->logEvent("ERROR", "Unable to execute search SQL for email lookup");
return null;
}
$row = $database->query("SELECT * FROM `users` WHERE `username` = \"$username\";");
if($row->num_rows == 1){
$row->fetch_assoc();
return $row['email'];
} else {
$Logger = new logger();
$Logger->logEvent("ERROR", "Could not find user $username for reverse lookup", true, 1);
return null;
}
}
當我return $row['email']
,出現錯誤,但。 做一個變種轉儲像這樣:var_dump($row->num_rows)
返回1,這正是我所期待的。爲什麼?因爲如果有一行,就意味着有一個用戶。而我的應用不允許重複的用戶。這意味着SQL是正確的。
爲什麼return $row['email']
在我試圖使用fetch_array
和fetch_assoc
時輸出該錯誤?有一行如上所述,fetch_assoc
應該把它變成一個數組。
OPS:我剛剛發現row
不是數組:
if(is_array($row)){
echo "row is array";
exit;
}
else {
echo "row is not array";
exit;
}
但我用fetch_assoc
。對不起,我是MySQLi面向對象部分的新手。
我不認爲這個問題是一個重複的,因爲對這一問題的awnser告訴OP使用''fetch_array'',這是我正是這裏使用。 –