SQL在IDE上运行,但在PHP应用程序上运行

时间:2015-03-20 08:49:56

标签: php mysql sql mysql-workbench

我正在使用MySQLWorkbench在我的开发服务器中测试我的SQL,这与我PHP application中运行的SQL相同。

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预编译语句中获得正确的值。

Probabbly并未进行最佳优化,但我只想尝试使用我的开发应用程序,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;
    }
}

0 个答案:

没有答案