将两个mysqli_fetch_array放入一个数组中

时间:2015-02-06 13:43:48

标签: php arrays mysqli

我在将数据从第二个选择语句分配到现有数组时遇到问题: 第一个选择工作正常,主数组获取应该的数据:

$scriptsSolo_SQL = "select * from funkeyword.scripts where pause = '0' AND solo= '1' ";

$result = mysqli_query($conn,$scriptsSolo_SQL);

while ($row = mysqli_fetch_assoc($result)) {
      $mainArray[] = array("script_id" => "$row[id]" , "cron_format" => "$row[cron_format]");
}

但问题是当我试图从第二个表添加到$ mainArray数据时:

$usersSolo_SQL = "select * from funkeyword.users where pause = '0' AND solo= '1' ";
$result = mysqli_query($conn,$usersSolo_SQL);
//Get Data from users table
while ($row = mysqli_fetch_assoc($result)) {
    $mainArray[] = array( "user_id" => "$row[id]");
}

如何将用户数据添加到从脚本数据创建的同一个数组中?

1 个答案:

答案 0 :(得分:0)

a)至少添加一些基本的错误处理

$result = mysqli_query($conn, $usersSolo_SQL);
if ( !$result ) {
    trigger_error('query failed', E_USER_ERROR);
}

b)(暂信我,我稍后会解释):不要使用SELECT *SELECT only,the,fields,you,process

$scriptsSolo_SQL = "select id,cron_format from funkeyword.scripts where pause = '0' AND solo= '1' ";
$result = mysqli_query($conn,$scriptsSolo_SQL);
if ( !$result ) {
    trigger_error('query failed', E_USER_ERROR);
}
[...]
$usersSolo_SQL = "select id from funkeyword.users where pause = '0' AND solo= '1' ";
$result = mysqli_query($conn, $usersSolo_SQL);
[...]

c)安装调试器,参见例如https://netbeans.org/kb/docs/php/debugging.html
或者(如果必须)添加调试以检查脚本的状态(某些var_export()s或var_dump()s有时会创造奇迹。但是你必须在之后删除tem;它可能会影响执行和/ printf-debuggers:我们都使用它们;它们仍然是......次优的)

d)使用UNION statement将两个结果集作为一个获取。这就是要求你不要在这种特殊情况下使用*的原因。您应该只查询UNION结果集,每个记录的字段数完全相同。很难说*。但是使用SELECT id,cron_formatSELECT id很容易说出“哦,我必须在第二个结果集中提出另一个字段”

<?php
$scriptsSolo_SQL = "
    (
        SELECT
            id,cron_format
        FROM
            funkeyword.scripts
        WHERE
            pause = '0' AND solo= '1'
    )
    UNION
    (
        SELECT
            id,null as cronformat
        FROM
            funkeyword.users
        WHERE
            pause = '0' AND solo= '1'
    )
";

$result = mysqli_query($conn,$scriptsSolo_SQL);
if ( !$result ) {
    trigger_error('query failed', E_USER_ERROR);
}
while ( $row=mysqli_fetch_assoc($result) ) {
    $mainArray[] = $row;
}

[e]这个表结构真的,真的有意义吗?看起来有点奇怪......]