我有一个我想在php中使用的SQL查询
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'max(CASE WHEN ca.date = ''',
date_format(date, '%Y-%m-%d'),
''' THEN coalesce(p.status, ''P'') END) AS `',
date_format(date, '%Y-%m-%d'), '`'
)
) INTO @sql
FROM calendar
where date>='2013-06-01'
and date <= '2013-06-05';
SET @sql
= CONCAT('SELECT ca.studentname,
ca.rollno,
ca.class, ', @sql, '
from
(
select c.date, a.studentname, a.rollno, a.class
from calendar c
cross join tbl_admission a
) ca
left join tbl_absentees p
on ca.rollno = p.rollno
and ca.date = p.date
where ca.date>=''2013-06-01''
and ca.date <= ''2013-06-05''
group by ca.studentname, ca.rollno, ca.class
order by ca.rollno');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
答案 0 :(得分:0)
MySQL PREPARE和EXECUTE语句仅在MySQL存储程序中受支持。例如,CREATE PROCEDURE
语句。
要从PHP运行MySQL查询,您需要选择要使用的数据库(mysqli或PDO),并且您的PHP代码需要建立与MySQL服务器的连接。准备SQL语句,执行它和获取结果(对于SELECT)的模式对于两个库都是类似的,但语法有点不同。 (语法还取决于您是在编写面向对象的样式还是面向过程的样式。)
您发布的MySQL代码非常奇怪。
我不确定我明白你在问什么。
在PHP中
关闭声明
使用PHP字符串连接操作将另一个SQL语句串联到一个PHP变量中
根据PHP变量
答案 1 :(得分:0)
最好使用该sql代码在MySQL数据库中创建存储过程,然后通过php调用该过程。