为什么我的SQL查询会丢弃关联数组中的列标题?

时间:2015-02-09 08:55:27

标签: php mysql arrays

我有两个表:usersscripts。用户有user_id列,脚本有两个:script_idcron_formtat。当我查询用户时:

$query = "select `user_id` from users";
$result = mysql_query($query) or die(mysql_error());

while ( $row = mysql_fetch_assoc($result)){
    array_push($usersArr,$row);
}

结果:

[{"user_id":"1"},{"user_id":"2"},{"user_id":"3"},{"user_id":"4"},{"user_id":"5"}]

我得到了关联数组(带有列的标题),但是为什么我的第二个查询返回包含所有值的数组但是删除了列的标题?:

$query = "select script_id,`cron_format`  from scripts";
$result = mysql_query($query) or die (mysql_error());

while($script = mysql_fetch_assoc($result)){
    foreach($usersArr as $user){
        $userScriptCronArr[$user["user_id"]][$script["script_id"]] = $script["cron_format"];
    }
}

结果:

{"1":{"1":"*\/3 * * * *","2":"*\/6 * * * *","3":"*\/3 * * * *","4":"* * * * *"},"2":{"1":"*\/3 * * * *","2":"*\/6 * * * *","3":"*\/3 * * * *","4":"* * * * *"},"3" ...

在第二个结果中,第一个数字是user_id,并且对于每个用户,我分配每个现有脚本。 为什么我的第二个查询会删除user_id,script_id和cron_format标题?

2 个答案:

答案 0 :(得分:1)

这里没有错。你得到你的关联数组..它的$ script

while($script = mysql_fetch_assoc($result)){
    foreach($usersArr as $user){
       $userScriptCronArr[$user["user_id"]][$script["script_id"]] =    $script["cron_format"];
   }
  }

所以你的查询没有错。 $ userScriptCronArr构造为具有两个数字键的多维数组。


关于角度部分:

while($script = mysql_fetch_assoc($result)){
    foreach($usersArr as $user){
       $userScriptCronArr[] = array(
           "user_id" => $user["user_id"], 
           "script_id" => $script["script_id"], 
           "cron_format" => $script["cron_format"]
       );
   }
}

这应该会产生一个JSON数组,您可以使用角度代码。但请阅读手册!

答案 1 :(得分:0)

在第一个输出中,您按原样推送整个查询结果。但是在第二步中你没有推动整个结果,而是在数值数组中启动$ userScriptCronArr。您想要的数据仍在$脚本中。你只需要正确地初始化它就完成了。