我在将数据从第二个选择语句分配到现有数组时遇到问题: 第一个选择工作正常,主数组获取应该的数据:
$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]");
}
如何将用户数据添加到从脚本数据创建的同一个数组中?
答案 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_format
和SELECT 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]这个表结构真的,真的有意义吗?看起来有点奇怪......]