2015-02-11 21 views
1

我最近對一個正在處理的站點做了很多更改,並且通過整個項目替換了與數據庫交互的舊mysql_方法。在這個特定的腳本我很難讓它工作相同。將我的php腳本轉換爲mysqli的問題

舊代碼

$checkinfo = mysql_query("SELECT * FROM `myusers` WHERE `userid` = '$uid' LIMIT 1") or die(mysql_error()); 

if(mysql_num_rows($checkinfo) < 1){ //log and die if user isnt in db 
    die("Incident has been logged!"); } 

$myinfo = mysql_fetch_assoc($checkinfo);  

和我的新代碼

$checkinfo = $mysqli->query("SELECT * FROM `myusers` WHERE `userid` = '$uid' LIMIT 1") or die('Error : ('. $mysqli->errno .') '. $mysqli->error); 

if($checkinfo->fetch_row() < 1){ 
    die("Incident has been logged!"); } 

$myinfo = $checkinfo->fetch_assoc(); 

現在它根本就沒有設定我的代碼的其餘部分陣列......請您指出我的愚蠢!謝謝

+0

'「去通了整個項目新老交替mysql_方法」'請你幫個忙和抽象你的數據庫訪問到一個類,那麼當你需要進一步做變化,你只需要在一個地方做到這一點 – Steve 2015-02-11 10:27:07

回答

3

通過使用->fetch_row(),它已經餵了第一行。由於您明確設置了LIMIT 1,因此下一次獲取調用的結果爲NULL

將其更改爲->num_rows代替:

$checkinfo = $mysqli->query("SELECT * FROM `myusers` WHERE `userid` = '$uid' LIMIT 1") or die('Error : ('. $mysqli->errno .') '. $mysqli->error); 

if($checkinfo->num_rows < 1){ 
    die("Incident has been logged!"); // change this to something more meaningful. 
} 

$myinfo = $checkinfo->fetch_assoc();