2017-03-24 38 views
1

我想獲取數據表格使用where條件。這裏是我的代碼,它只返回一個值。在這個邏輯之前我使用了foreach函數,但它給了我相同的一個值。面對與php的mysqli錯誤

public function text1(){ 

     $valuee = array('20','14','9'); 
     $length = count($valuee); 
      for ($i = 0; $i < $length; $i++) { 
      $sql = "SELECT * FROM leads WHERE id = '".$valuee[$i]."'"; 
      $rs = mysqli_query($this->link, $sql) or die(mysqli_error($this->link)); 
      return $rs; 
      } 

    } 

這裏是rsult:

mysqli_result Object ([current_field] => 0 [field_count] => 6 [lengths] => [num_rows] => 1 [type] => 0) 
+0

這是mysqli_query的正常行爲:) – hassan

+0

閱讀關於[mysqli_query](http://php.net/manual/en/mysqli.query.php)函數的更多信息,之後應該怎麼做 – hassan

回答

2

兩個主要問題:

首先,你return $rs;你的循環中。 在循環的第一次迭代中,此返回將立即結束您的函數並返回值。您需要將結果收集到循環內的數組中,並在循環後返回結果數組

其次,您正在執行查詢mysqli_query,但是您沒有從它返回的結果對象中獲取任何行。

public function text1(){ 
    $valuee = array('20','14','9'); 
    $length = count($valuee); 
    for ($i = 0; $i < $length; $i++) { 
     $sql = "SELECT * FROM leads WHERE id = '".$valuee[$i]."'"; 
     $rs = mysqli_query($this->link, $sql) or die(mysqli_error($this->link)); 

     // fetch the row from the result into an array 
     $results[] = $rs->fetch_assoc(); 
    } 

    // return the array after it has been filled in the loop 
    return $results; 
} 

還有一些其他問題,但這是目前給您帶來麻煩的主要邏輯錯誤。

+0

感謝Don' t恐慌它的工作.. – joney

+0

爲什麼不選擇'在哪裏',而不是循環一個數組 – hassan

+0

@hassan我想過,但決定反對它,主要是因爲我提到的那些「其他問題」。我認爲這應該是一個準備好的語句,並且準備好的語句在mysqli中是一種痛苦,尤其是對於具有任意數量參數的WHERE IN。我決定解釋爲什麼他們這樣做的方式不起作用。 –