我正在尝试从数据库中的两个表中查询单个结果。这是我的代码:
$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
是一个网址变量。此代码尝试使用该变量,使用它查询数据库,并返回结果。我收到这个错误:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
在这里撞墙。无法弄清楚为什么这个错误不断发生。任何帮助==谢谢。
答案 0 :(得分:1)
使用UNION
列数和列类型时,两个查询必须相同。
现在,当您查询两个不同的表时,我想可以安全地假设列数不同或相应的列类型不匹配。
尝试使用类似的东西
select col1, col2 from classifieds.......
Union All
select col1, col2
但同样,数字和相应的列类型应该相同。
答案 1 :(得分:0)
直接执行查询并查看是否返回任何行。顺便说一下,sprintf的用途是什么?
答案 2 :(得分:0)
将此错误处理添加到您的代码中:
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
执行查询失败,结果$result
设置为false
,这不是有效的MySQL结果资源,因而是错误。
问题的原因可能是两个表的列数不等。 UNION ALL
期望其子查询返回相同数量的列。