2013-12-09 72 views
-1

我已經寫了這個簡單的函數,它返回false或結果數組,但也應該返回錯誤,對於某些reasson我調用此函數時出現此錯誤。只有在查詢失敗的情況下如何處理mysqli錯誤?

- Call to a member function fetch_array() on a non-object 

我只想achiev,如果查詢失敗,返回錯誤和虛假的,如果查詢是OK,返回結果瞧。

功能:

function full_query($query) 
{ 
    global $mysqli; 

    $result = $mysqli->query($query); 

    if ($mysqli->error) 
    { 
     print $mysqli->errno; 

     return false; 
    } 
    else 
    { 
     $results_array = array(); 

     while($row = $result->fetch_array(MYSQLI_ASSOC)) 
     { 
      $results_array[] = $row; 
     } 

     $result->close(); 

     return $results_array; 
    } 
} 
+0

把條件if($ result)在else之外的其他塊 – user2907171

回答

1

你有錯誤的想法無論是在錯誤處理和編寫簡單的功能。

還有沒什麼特別的在mysqli錯誤。這就像其他任何錯誤 - 文件系統錯誤,語法錯誤,運行時錯誤。所以,所有的錯誤都必須以相同的方式處理 - 必須記錄錯誤信息,腳本暫停,錯誤屏幕必須顯示給用戶。

肯定沒有函數應該只是返回錯誤消息作爲返回值。

所以,請將您的mysqli進入異常模式前連接

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 

而且所有的錯誤處理將被PHP自動完成。

說到函數本身 - 它永遠不會被使用。因爲它不支持預準備語句。唯一可用的變體應該允許將第二個參數作爲數組綁定,以使該函數以唯一正確的方式運行 - 查詢用佔位符編寫,而所有變量都是單獨發送的。

相關問題