2017-03-24 26 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。我决定解释为什么他们这样做的方式不起作用。 –