я использую MySQLWorkbench
для тестирования моего SQL на моем dev-сервере, который работает в моем PHP application
,
SQL это:
SELECT CalendarioLaboratorio.laboratorio, CalendarioLaboratorio.asignatura, Calendario.horaInicio, Calendario.horaFin
FROM CalendarioLaboratorio, Calendario
WHERE Calendario.dia = dayofweek(now())
AND time(subtime(now(), '01:00:00')) >= Calendario.horaInicio
AND time(subtime(now(), '01:00:00')) <= Calendario.horaFin
AND CalendarioLaboratorio.calencario = Calendario.id
AND CalendarioLaboratorio.laboratorio = :laboratorio;
НОТА: :laboratorio
получает правильное значение в php подготовленном заявлении.
Вероятно, не лучше оптимизировать, но я просто хочу попробовать в моем dev-приложении, IDE отлично выполняет запрос, но мое приложение отображает эту ошибку.
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.dia = dayofweek(now()) AND time(subtime(now(), '01:00:00')) >= Calendario.horaI' at line 1
PHP-код, где я использую запрос
public static function getCalendarioByNow($laboratorio)
{
$conector = new Conexion("localhost","admin_hectorapp");
try
{
$con = $conector->Conectar();
$con->exec('SET CHARACTER SET utf8');
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$consulta = $con->prepare("SELECT CalendarioLaboratorio.laboratorio, CalendarioLaboratorio.asignatura, Calendario.horaInicio, Calendario.horaFin FROM CalendarioLaboratorio, Calendario WHERE Calendario.dia = dayofweek(now()) AND time(subtime(now(), '01:00:00')) >= Calendario.horaInicio AND time(subtime(now(), '01:00:00')) <= Calendario.horaFin AND CalendarioLaboratorio.calencario = Calendario.id AND CalendarioLaboratorio.laboratorio = :laboratorio;");
$consulta->bindParam(':laboratorio', $laboratorio);
$dato = array('laboratorio'=>$laboratorio);
$consulta->execute($dato);
$conector = null;
$con = null;
return $consulta;
}
catch (Exception $e)
{
$conector = null;
$con = null;
throw $e;
}
}
Задача ещё не решена.
Других решений пока нет …