donglian1982 2016-03-30 09:56
浏览 184
已采纳

如何从mySQL数据库创建一个数组?

$sql = "SELECT name FROM people WHERE id = '$id'";  
$array = array();       
$q = $pdo->prepare($sql);
$q->execute();
foreach ($pdo->query($sql) as $row) {
$array[] = $row;
}

My result is:

array(4) {
  [0]=>
  array(2) {
    ["name"]=>
    string(4) "fred"
    [0]=>
    string(4) "fred"
  }
  [1]=>
  array(2) {
    ["name"]=>
    string(3) "sam"
    [0]=>
    string(3) "sam"
  }
  [2]=>
  array(2) {
    ["name"]=>
    string(4) "alan"
    [0]=>
    string(4) "alan"
  }
  [3]=>
  array(2) {
    ["name"]=>
    string(63) "john"
    [0]=>
    string(63) "john"
  }
}

But I would need:

Array
(
    [fred] => fred
    [sam] => sam
    [alan] => alan
    [john] => john
)

I tried for example:

foreach ($pdo->query($sql) as $key => $row) {..

and also

foreach ($pdo->query($sql) as $row) {
$array[] = $row;
$row = array_combine(array_values($row), array_values($row));
}

but I always get the same result...

  • 写回答

3条回答 默认 最新

  • dousuochu7291 2016-03-30 10:33
    关注

    Use fetchAll()

    But not a vanilla one but with a secret argument called PDO::FETCH_COLUMN

    $sql = "SELECT name FROM people WHERE id = ?";  
    $q = $pdo->prepare($sql);
    $q->execute([$id]);
    $array = $q->fetchAll(PDO::FETCH_COLUMN);
    

    It will get you a single-dimensional array with names like this

    Array
    (
        [0] => fred
        [1] => sam
        [2] => alan
        [3] => john
    ) 
    

    Note that you are using prepared statements completely wrong way making your code vulnerable to SQL injection. It is fixed in the code above.

    If you insists on getting both key and value, then change your code as follows

    $sql = "SELECT name, name FROM people WHERE id = ?";  
    $q = $pdo->prepare($sql);
    $q->execute([$id]);
    $array = $q->fetchAll(PDO::FETCH_KEY_PAIR);
    

    and it will give you exact array as you asked

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥23 (标签-bug|关键词-密码错误加密)
  • ¥66 比特币地址如何生成taproot地址
  • ¥20 数学建模数学建模需要
  • ¥15 关于#lua#的问题,请各位专家解答!
  • ¥15 什么设备可以研究OFDM的60GHz毫米波信道模型
  • ¥15 不知道是该怎么引用多个函数片段
  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决