2013-12-08 16 views
0

我在準備語句時遇到了一些麻煩。基本上,這個查詢沒有返回行,即使我知道這個查詢應該返回多行。我認爲這只是SQL注入的一個問題,但也許我在這裏做了一些其他的錯誤,我不知道。如果我拿出了多少行的檢查有,我得到一個錯誤:mysqli:PHP致命錯誤:調用成員函數fetch_array()

PHP致命錯誤:調用一個成員函數fetch_array()

任何幫助,將不勝感激!

$stmt = $mysqli->prepare("SELECT sid from SDS WHERE uid=? AND dst=?"); 

    $stmt->bind_param('ss',$username,$structureType); 

    $stmt->execute(); 

    $stmt->bind_result($results); 

    $stmt->fetch(); 

    if ($results) { 

     if($results->num_rows == 0) { 
      print("No results here."); 
      return 0; 
     } 

     $recordnames = array(); 

     while ($next_row = $results->fetch_array()) { 
       $recordnames[] = $next_row['sid']; 
     } 

     return $recordnames; 
    } 

回答

0

當您使用$ stmt-> bind_result($ result);您將數據庫的sid綁定到變量$ results。所以你不能像執行操作:

if($results->num_rows == 0) { //... } 

$results->fetch_array(); 

這是我會怎麼做:

<?php 

$stmt = $mysqli->prepare("SELECT sid from SDS WHERE uid=? AND dst=?"); 
$stmt->bind_param('ss', $username, $structureType); 
$stmt->execute(); 
$stmt->bind_result($sid); 
$stmt->store_result(); 

if ($stmt->num_rows == 0) 
{ 
    print("No results here."); 

    $stmt->close(); 

    return 0; 
} 
else 
{ 
    $recordnames = array(); 

    while($stmt->fetch()) 
    { 
     $recordnames[] = $sid; 
    } 

    return $recordnames; 
} 

?> 

這種方式使用不同的邏輯,檢查行數0,如果這樣顯示「沒有結果」,如果沒有把結果放入數組。

+0

工作!你是一個救星! – user3079966

相關問題