如何将MySQL查询结果行存入PHP数组?
解决MySQL查询结果存入PHP数组的问题
首先帮你排查两个关键问题:
1. 变量名拼写错误(容易忽略的坑)
你连接数据库时用的是$db_name,但SQL语句里写的是$dbname(少了下划线),这会导致查询的表不存在,自然拿不到数据,数组也就为空了!先把这个修正过来:
$sql = "SELECT * FROM " . $db_name . " WHERE id ='$id'";
2. 数组存储的写法调整
你的现有写法其实会生成一个二维数组,比如最终$thisArray的结构是:
[ ['张三', '123456'], ['李四', '789012'] ]
如果这不是你想要的结构,可以根据需求调整:
需求A:存储为关联数组(键值对)
如果想把Name作为键,accountNumber作为值,写法改成这样:
$thisArray = []; // 先初始化数组,避免未定义变量警告 while ($row = mysqli_fetch_array($query)) { $thisArray[$row['Name']] = $row['accountNumber']; } // 输出示例:Array ( [张三] => 123456 [李四] => 789012 )
需求B:存储为一维数组(只存单个字段)
如果只想收集所有Name或者accountNumber,直接追加单个值:
$namesArray = []; while ($row = mysqli_fetch_array($query)) { $namesArray[] = $row['Name']; } // 输出示例:Array ( [0] => 张三 [1] => 李四 )
需求C:保留清晰的二维数组结构
如果你的需求就是二维数组,建议把字段名也带上,后续取值更直观:
$thisArray = []; while ($row = mysqli_fetch_array($query)) { $thisArray[] = [ 'Name' => $row['Name'], 'accountNumber' => $row['accountNumber'] ]; } // 后续调用示例:echo $thisArray[0]['Name'];
另外,推荐用mysqli_fetch_assoc()代替mysqli_fetch_array(),前者只返回关联数组,避免索引数组的冗余,性能也更优~
内容的提问来源于stack exchange,提问作者user9419091
相关产品推荐
相关产品推荐

