尝试使用UNION ALL查询两个表时出错


Error while trying to query two tables with UNION ALL

我试图从我的数据库中的两个表查询单个结果。下面是我的代码:

$pageid = mysql_real_escape_string($_GET['id']);
$query = sprintf("(SELECT * FROM classifieds WHERE pageid = '$pageid' LIMIT 1)
UNION ALL
(SELECT * FROM resumes WHERE pageid = '$pageid' LIMIT 1)");
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
    echo $row['title'] . "<br/>";
    }

pageid是URL变量。这段代码试图使用该变量,用它查询数据库,并返回结果。我得到这个错误:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

碰壁了。不明白为什么这个错误总是发生。任何帮助==谢谢。

当使用UNION时,两个查询的列数和列类型必须相同

现在,当您查询两个不同的表时,我想可以安全地假设列数不同或相应的列类型不匹配。

试试这样写

select col1, col2 from classifieds.......
Union All
select col1, col2

但同样,数字和相应的列类型应该相同

直接执行查询,看看它是否返回任何行。顺便说一句,sprint有什么用?

将此错误处理添加到您的代码中:

$result = mysql_query($query);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

查询的执行失败,因为$result被设置为false,这不是一个有效的MySQL结果资源,因此出现错误。

一个可能的原因是两个表的列数不相等。UNION ALL期望它的子查询返回相等的列数