Помимо пробела между COUNT
и (*)
, есть еще одна проблема. Вы не можете использовать $rs7[mailcount]
или $rs7[maildate]
в своем коде PHP, потому что ваш запрос эквивалентен:
SELECT
COUNT(*) as alertcount
, date as alertdate
FROM alerts
WHERE to_id = '$id'
AND date > '$lastcheck'
UNION
SELECT
COUNT(*) --- No "as mailcount" here
, date --- No "as maildate" either
FROM mobmail
WHERE to_id = '$id'
AND to_del = 0
AND seen = '0'
и вернет две строки и только 2 столбца:
alertcount | alertdate
-----------|------------
24 | 2012-01-04
73 | 2011-11-11
Два способа решения этой проблемы:
Либо сохраните запрос (изменив UNION
на UNION ALL
, чтобы всегда получать 2 строки), и измените PHP на использование 2 строк.
Или измените запрос на:
SELECT alertcount, alertdate, mailcount, maildate
FROM
( SELECT
COUNT(*) AS alertcount
, date AS alertdate
FROM alerts
WHERE to_id = '$id'
AND date > '$lastcheck'
) AS a
CROSS JOIN
( SELECT
COUNT(*) AS mailcount
, date AS maildate
FROM mobmail
WHERE to_id = '$id'
AND to_del = 0
AND seen = '0'
) AS b