【问题标题】:php mysqli result into an array not working as expectedphp mysqli 结果进入数组未按预期工作
【发布时间】:2015-09-01 18:14:25
【问题描述】:

我有一个 php /mysqli 查询,我想用结果填充一个数组:

$query3 ="SELECT * FROM conditions";
$results = array();
if ($result = mysqli_query($conn, $query3)){    

    while($row = mysqli_fetch_assoc($result))
     {
       $results[] = $row;
     }
}
print_r($results);

这里出了点问题——我认为它在数组中创建数组。 (说实话,我被这个结果弄糊涂了)

我该如何正确地做到这一点!

Array (
    [0] => Array ( [condition_id] => 1 [condition_name] => Epilepsy )
    [1] => Array ( [condition_id] => 2 [condition_name] => ASD )
    [2] => Array ( [condition_id] => 3 [condition_name] => BESD )
    [3] => Array ( [condition_id] => 4 [condition_name] => HI )
    [4] => Array ( [condition_id] => 5 [condition_name] => Medical )
    [5] => Array ( ...

感谢所有的帮助 - 现在我应该如何创建我真正想要的,这是一个带有 key=>value 的数组,如下所示:

array (1=>epilepsy, 2=>ASd...) - 数字指的是主键。

请问如何从这个查询中填充一个数组?

【问题讨论】:

  • $results[] = $row; 您将每一行添加到您的数组中,因此每个子数组都是您数据库中的一行。问题出在哪里?
  • 你期待什么?
  • 我想我期待像 1=>Eplisey、2=>ASD、3=>BESD 等 - 只有一个数组 - 第一个从 1 开始而不是 0。
  • $results[] = $row['condition_name'];
  • @u_mulder 除了 0 以数组为基础之外,它可以工作。如果 OP 想要它与上面完全相同,您需要以 1 为数组的基础,或者更好的是,让返回的结果集控制它 $result[$row['condition_id']] = $row['condition_name'];...

标签: php arrays mysqli


【解决方案1】:

更改您的代码如下:

while($row = mysqli_fetch_assoc($result))
 {
   $results[$row['condition_id']] = $row['condition_name'];
 }

【讨论】:

    【解决方案2】:

    转到 PDO,卢克。

    $results = $pdo->query("SELECT  FROM conditions")->fetchAll(PDO::FETCH_KEY_PAIR);
    print_r($results);
    

    哎呀!这就是所有的代码吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      相关资源
      最近更新 更多