【问题标题】:Getting wrong array php sql得到错误的数组php sql
【发布时间】:2018-09-21 14:39:43
【问题描述】:

我有一个像这样的名为 user 的表

id | user
 1 | test
 2 | test1

我有一个这样的查询:

$arr = array(0 => 1 , 1=> 2);
$sql = "SELECT user 
    FROM user 
    WHERE id IN (".implode(',',$arr).") 
    ORDER BY id";
$gg = mysqli_query($conn, $sql);
if(!$gg) {
    echo mysqli_error($conn);
} else {
    while ($row = mysqli_fetch_array($gg)) {
        print_r($row[0]);
    }
}

输出始终显示为testtest1 但我希望它像数组一样 ([0] => test, [1] => test1) 甚至test,test1 都可以,但它也应该在循环之外工作。帮助表示赞赏。

【问题讨论】:

  • 错误在哪里?您使用键 0 打印数组,因此将该值添加到数组中并完成
  • 钥匙的数量可能会有所不同,我不会知道有多少
  • 你要创建什么数组?

标签: php mysql sql mysqli


【解决方案1】:

创建一个数组,然后打印该数组。 (和/或对数组做任何你想做的事情)

例如:

$arr = array(0 => 1 , 1=> 2);
$sql = "select user from user where id IN (".implode(',',$arr).") ORDER by id";
$gg = mysqli_query($conn, $sql);
$arrayOfResults = array();

if(!$gg){
    echo mysqli_error($conn);
}
else {
    while ($row = mysqli_fetch_array($gg))
    {
        array_push($arrayOfResults, $row[0]);
    }

    print_r($arrayOfResults);
}

【讨论】:

    【解决方案2】:

    mysqli_fetch_array($gg, MYSQLI_ASSOC) 将返回一个关联数组。您可以使用var_dump($row) 进行验证 此外,您可以使用MYSQLI_NUM(用于索引作为数字)或MYSQLI_BOTH(用于索引作为数字以及列名)而不是MYSQLI_ASSOC

    否则你也可以使用mysqli_fetch_assoce.g. here

    【讨论】:

      猜你喜欢
      • 2015-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多