在foreach循环中向数组添加多个SQL结果

时间:2018-06-14 07:53:12

标签: php sql arrays


我在尝试完成这项工作时遇到了一些麻烦。问题是:

我有一个看起来像

的数组
  

wants_arr_flat

[0] => booze
[1] => nudes
[2]   =>房间

我希望我的foreach循环遍历这些值,生成不同的SQL语句,然后将该SQL语句的结果保存到另一个数组。我现在尝试使用的代码就是这个。

    foreach ( $wants_arr_flat as $value ) {
      $sql = "SELECT * FROM offers WHERE user_id != $_SESSION[user_id] AND offer='$value'";
      $result=$conn->query($sql);
      $want_match_arr = mysqli_fetch_row($result);
    echo '<pre>'; print_r($want_match_arr); echo '</pre>';  //testing echo

显然这只是在每次迭代时覆盖最后一个数组,所以我最终只在数组中得到一个结果。

2 个答案:

答案 0 :(得分:3)

而不是

$want_match_arr = mysqli_fetch_row($result);

使用

$want_match_arr[] = mysqli_fetch_row($result);

答案 1 :(得分:0)

如果从SQL获得多行,那么这样做会更好。

$want_match_arr = [];
foreach ( $wants_arr_flat as $value ) {
  $sql = "SELECT * FROM offers WHERE user_id != $_SESSION[user_id] AND offer='$value'";
  $result=$conn->query($sql);
  while ($row = mysql_fetch_assoc($result)) {
     $want_match_arr[] = $row;
  }
}
echo '<pre>'; print_r($want_match_arr); echo '</pre>';  //testing echo