我正在尝试从数据库中的两个表查询单个结果。 这是我的代码:

$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

在这里打墙。 无法弄清楚为什么此错误持续发生。 任何帮助==谢谢。

===============>>#1 票数:1 已采纳

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

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

尝试使用这样的东西

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

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

===============>>#2 票数:0

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

===============>>#3 票数:0

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

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

您的查询执行失败,结果$result设置为false ,这不是有效的MySQL结果资源,因此发生了错误。

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

  ask by Norse translate from so

未解决问题?本站智能推荐: