2015-07-21 2 views
1

Следующий SQL работает как намеренный при выполнении в phpmyadmin, однако, когда я пытаюсь выполнить в своем 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)); SELECT 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) WHERE (t2.cron_ran_at> @startDate ИЛИ t2.cron_ran_at IS NULL) И t1.cron_ran_at < @endDate GROUP BY t1.status) `

+1

Сделать переменные переменных PHP переменными. – chris85

ответ

1

Вы не можете запустить несколько операторов MySQL в одном запросе в PHP. Вы должны сделать это хранимой процедурой или функцией.

Смежные вопросы