如何以这种格式将MYSQLI查询存储为多维数组

时间:2018-03-19 06:52:06

标签: php mysql mysqli

我正在尝试查询数据库A并将结果存储为数组,然后我将其插入数据库B.我可以直接移动简单数据,但由于此特定查询的复杂性(30+左连接),我必须将其存储为数组并将其插入单独的查询中。以下示例仅包含两个字段,以简化操作并专注于核心问题。

我有工作代码来插入一个存储如下的数组:

$data = array(
    array(  // record 1, or row 1
        "1",
        "Value for field 1.2"
    ),
    array(  // record 2, or row 2
        "2",
        "Value for field 2.2"
    ),
    array(  // record 3, or row 3
        "3",
        "Value for field 3.2"
    ),   

     // etc...

);

不幸的是,我无法得到我的第一个查询来存储这样的数据。我已经使用PHP多年了,但我之前从未搞过数组。我不确定我做错了什么。使用“print_r($ data),这就是我需要数组的结果(这是$ data变量与print_r()的相似之处):

Array ( [0] => Array ( [0] => 1 [1] => Value for field 1.2 ) [1] => Array ( [0] => 2 [1] => Value for field 2.2 ) [2] => Array ( [0] => 3 [1] => Value for field 3.2 ) ) 

我创建数组的查询与此模式不匹配。 “print_r($ new_array)”命令产生这个:

Array ( [0] => Array ( [id] => 37 [post_title] => test1 ) [1] => Array ( [id] => 38 [post_title] => test2 ) [2] => Array ( [id] => 35 [post_title] => test3 ) [3] => Array ( [id] => 42 [post_title] => test4 ) [4] => Array ( [id] => 44 [post_title] => test5 ) [5] => Array ( [id] => 46 [post_title] => test6 ) ) 

这是我将MySQL数据放入数组的MySQL查询:

$test_sql = "SELECT id, post_title FROM wp_posts where post_type LIKE 'test'";
$resultTest = mysqli_query($con, $test_sql);
//$new_array[] = $row;
while ($row = mysqli_fetch_assoc($resultTest)) {
    $rows[] = $row;
}

如果我理解发生了什么,我正在创建的数组是为多维数组创建键值对,但我需要的格式不是键值,只是一个值数组。由于我已经有插入查询工作,我宁愿使用选择查询将数据存储在没有键值对的数组中,如果可能的话,但我对所有建议持开放态度。

提前感谢您的善意和帮助!

1 个答案:

答案 0 :(得分:2)

您需要做的就是将fetch功能更改为fetch_row

while ($row = mysqli_fetch_row($resultTest)) {
    $rows[] = $row;
}

fetch_arrayMYSQLI_NUM作为第二个参数:

while ($row = mysqli_fetch_array($resultTest, MYSQLI_NUM)) {
    $rows[] = $row;
}