Php SQL SELECT查询导致不同的列错误
我正在尝试整理我的网站的邮件垃圾部分,结果证明很麻烦,我之前的查询有问题,最后终于让它工作了,但是现在分页也造成了麻烦,我得到了这个错误Php SQL SELECT查询导致不同的列错误,php,mysql,html,sql,Php,Mysql,Html,Sql,我正在尝试整理我的网站的邮件垃圾部分,结果证明很麻烦,我之前的查询有问题,最后终于让它工作了,但是现在分页也造成了麻烦,我得到了这个错误 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Arken\pagination\function.php on line 9 SELECT COUNT(*) as `num` FROM user_inbox WH
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Arken\pagination\function.php on line 9
SELECT COUNT(*) as `num` FROM user_inbox WHERE user_inbox.receiver_user_id='4' AND user_inbox.mail_deleted ='1' UNION SELECT * FROM user_outbox WHERE user_outbox.sender_user_id='4' AND user_outbox.mail_deleted ='1'
The used SELECT statements have a different number of columns
围绕第9行的代码如下所示
$query = "SELECT COUNT(*) as `num` FROM {$query}";
$row = mysql_fetch_array(mysql_query($query)) or die($query."<br/><br/>".mysql_error());;
$total = $row['num'];
+------------+---------------+------+-----+----------+
| Field | Type | Extra |
+------------+---------------+------+-----+----------+
| message_id | int(11) | auto_increment |
| receiver_user_id | int(11) |
| receiver_username | varchar(255) |
| sender_user_id | int(11) |
| sender_username | varchar(255) |
| mail_subject | varchar(255) |
| mail_message | text |
| mail_date_sent | datetime |
| mail_viewed | enum('0','1') |
| mail_deleted | enum('0','1') |
+------------+---------------+------+-----+----------+
+------------+---------------+------+-----+----------+
| Field | Type | Extra |
+------------+---------------+------+-----+----------+
| message_id | int(11) | auto_increment |
| sender_user_id | int(11) |
| sender_username | varchar(255) |
| receiver_user_id | int(11) |
| receiver_username | varchar(255) |
| mail_subject | varchar(255) |
| mail_message | text |
| mail_date_sent | datetime |
| mail_viewed | enum('0','1') |
| mail_deleted | enum('0','1') |
+------------+---------------+------+-----+----------+
我的user_outbox表如下所示
$query = "SELECT COUNT(*) as `num` FROM {$query}";
$row = mysql_fetch_array(mysql_query($query)) or die($query."<br/><br/>".mysql_error());;
$total = $row['num'];
+------------+---------------+------+-----+----------+
| Field | Type | Extra |
+------------+---------------+------+-----+----------+
| message_id | int(11) | auto_increment |
| receiver_user_id | int(11) |
| receiver_username | varchar(255) |
| sender_user_id | int(11) |
| sender_username | varchar(255) |
| mail_subject | varchar(255) |
| mail_message | text |
| mail_date_sent | datetime |
| mail_viewed | enum('0','1') |
| mail_deleted | enum('0','1') |
+------------+---------------+------+-----+----------+
+------------+---------------+------+-----+----------+
| Field | Type | Extra |
+------------+---------------+------+-----+----------+
| message_id | int(11) | auto_increment |
| sender_user_id | int(11) |
| sender_username | varchar(255) |
| receiver_user_id | int(11) |
| receiver_username | varchar(255) |
| mail_subject | varchar(255) |
| mail_message | text |
| mail_date_sent | datetime |
| mail_viewed | enum('0','1') |
| mail_deleted | enum('0','1') |
+------------+---------------+------+-----+----------+
我真的很感激你们能给我的任何帮助,我花了将近两天的时间来整理网站的这一部分,我需要把它完成。
感谢您的反馈。问题在于您使用UNION返回的列数不同
SELECT COUNT(*) as `num` FROM user_inbox ...
UNION
SELECT * FROM user_outbox ...
您可以让MySQL为您合计行数:
SELECT COUNT(*) AS `num`
FROM
(
SELECT * FROM user_inbox ...
UNION ALL
SELECT * FROM user_outbox ...
) AS your_table_alias
或:
查询的第二部分(UNION之后)也应该有COUNT(*)
您应该对查询“$query”进行更多的研究。看起来您正在为PHP(我猜)代码中的变量“$query”定义的查询中选择不同数量的列(至少错误是这样说的)。@MarkByers-不是两次。第一部分在收件箱中,第二部分在发件箱中。好的,对不起,我没有注意到。嗨,我尝试了你的答案,它似乎起了作用,但由于某种原因,它把所有的分页都弄乱了,所以例如,我有3个选项卡(收件箱、发件箱和垃圾箱)。如果垃圾箱有两页(分页),它会显示第一页,很好,但当我点击进入下一页时,它只是将我转移到“收件箱”选项卡,我的解决方案/答案应该是针对mysql错误的。请验证您的PHP分页逻辑。更新问题或发布带有分页逻辑的新问题。@user1136379:我认为这个答案不正确。你看过我的答案了吗?你为什么认为我的答案不正确?你能举一个失败的例子吗?