0
我需要根据单个表中选定的日期显示所有员工的出勤率。在php中执行mysql查询以获取列和行
这是我的MySQL查询:
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'max(CASE WHEN ca.Date = ''',
date_format(Date, '%Y-%m-%d'),
''' THEN coalesce(p.Out_time) END) AS `',
date_format(Date, '%Y-%m-%d'), '`'
)
) INTO @sql
FROM attendance
where Date>='2015-04-27'
and Date <= '2015-04-30';
SET @sql
= CONCAT('SELECT ca.User_name,
ca.User_id,
', @sql, '
from
(
select c.Date, a.User_name, a.User_id
from attendance c
cross join attendance a
) ca
left join attendance p
on ca.User_id = p.User_id
and ca.Date = p.Date
where ca.Date>=''2015-04-27''
and ca.Date <= ''2015-04-30''
group by ca.User_name, ca.User_id
order by ca.User_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
它是在MySQL(它显示的结果)执行罚款,但同时在PHP它不显示任何内容执行,
$qqq=mysql_query($sss);
while($rrr=mysql_fetch_array($qqq))
{
echo $rrr;
}
它扔这些警告:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in D:\Xampp\htdocs\php\temp.php on line 118
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\Xampp\htdocs\php\temp.php on line 119
我的表结构是这样的:
CREATE TABLE `attendance` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`User_id` varchar(50) NOT NULL,
`User_name` varchar(100) NOT NULL,
`Date` date DEFAULT NULL,
`In_time` time DEFAULT NULL,
`Out_time` time DEFAULT NULL,
`Time_diff` decimal(5,2) DEFAULT NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `Id_UNIQUE` (`Id`)
)
发布您的php代码不起作用 – Dalvik
$ sss =“MySQL query above above”; $ qqq = mysql_query($ sss); ($ rrr = mysql_fetch_array($ qqq)) { echo $ rrr; } – user3530708
请发布$ sss的声明,这是问题出现的地方。 – Chad