[英]Syntax error or access violation
在phpmyadmin中执行时,以下SQL按预期工作,但是当我尝试在PHP脚本中执行时,它将引发异常。
$log_stats = DB::select(DB::raw("
SET @startDate = '$from';
SET @endDate = '$db_to';
SET @total_duration = (CAST(@endDate as DATETIME) - CAST(@startDate as DATETIME));
SELECT t1.status
,SUM(IF(t2.cron_ran_at IS NULL OR t2.cron_ran_at > @endDate,
CAST(@endDate AS DATETIME),
t2.cron_ran_at) -
IF(t1.cron_ran_at < @startDate,
CAST(@startDate AS DATETIME),
t1.cron_ran_at)) / @total_duration as duration
FROM monitor_logs t1
LEFT JOIN monitor_logs t2 ON t1.id = (t2.id - 1)
WHERE (t2.cron_ran_at > @startDate OR t2.cron_ran_at IS NULL) AND t1.cron_ran_at < @endDate
GROUP BY t1.status
"));
引发异常...
SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册,以在'SET @endDate ='2015-07-22 00:00:00'附近使用正确的语法; SET @total_duration =(CAST(@endDate'在第2行(SQL:SET @ startDate ='2015-07-14 00:00:00'; SET @ endDate ='2015-07-22 00:00:00'; SET @total_duration =(CAST(@endDate为DATETIME)-CAST(@startDate为DATETIME));选择t1.status,SUM(IF(t2.cron_ran_at IS NULL或t2.cron_ran_at> @endDate,CAST(@endDate AS DATETIME) ),t2.cron_ran_at)-IF(t1.cron_ran_at <@startDate,CAST(@startDate AS DATETIME),t1.cron_ran_at))/ @total_duration作为持续时间FROM monitor_logs t1 LEFT JOIN monitor_logs t2 ON t1.id =(t2.id -1)在哪里(t2.cron_ran_at> @startDate或t2.cron_ran_at为NULL)和t1.cron_ran_at <@endDate GROUP BY t1.status)`
您不能在PHP的一个查询中运行多个mysql语句。 您应该将此设置为存储过程或函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.