我在命令行中有Mysql prepare语句工作。如何让它与PHP PDO准备语句一起使用?
set @sql = null;
SET group_concat_max_len=15000;
select group_concat(distinct concat('sum(if(date=''',date_format(date,'%Y-%m-%d'),''',total,null)) as ', date_format(date,'dd%Y%m%d'))) into @sql from sales where date_format(date,'%m%y')='0615';
set @sql = concat('select ',@sql,' from sales');
PREPARE stmt FROM @sql;
EXECUTE stmt;
答案 0 :(得分:0)
在这种情况下,您不需要在PDO中使用准备好的语句。
您粘贴的代码是获取在纯SQL中运行的动态生成语句的唯一方法。
由于涉及PHP,您应该在for循环中生成该SQL并使用PDO :: query方法执行它。
答案 1 :(得分:0)
您可以使用PHP而不是SQL来进行组连接。
$pdo->query("SET group_concat_max_len = 15000");
$stmt1 = $pdo->prepare("select distinct concat('sum(if(date=''',date_format(date,'%Y-%m-%d'),''',total,null)) as ', date_format(date,'dd%Y%m%d')) as col from sales where date_format(date,'%m%y')= :mmyy";
$stmt1->execute(":mmyy" => '0615');
$cols = $stmt1->fetchAll(PDO::FETCH_COLUMN, 0);
$cols_string = implode(',' $cols);
$sql = "SELECT $col_string FROM sales";
$stmt2 = $pdo->prepare($sql);
$stmt2->execute();