2014-12-19 5 views
1

Я использую PHP-MySQLi-Database-Class (MysqliDb.php).SQL-запрос rawQuery с PHP-MySQLi-Database-Class

Я получил этот запрос, но Wamp говорит:

Фатальная ошибка: Проблема подготовки запроса

SELECT car_id FROM gm_cars WHERE car_id NOT IN 
( 
    SELECT reserve_car_id FROM gm_reservations 
WHERE reserve_dropOff > ? AND reserve_dropOff = ? AND reserve_pickUp) 

ERREUR де syntaxe Пре де '' а-ля Ligne 1 в C:\wamp\www\work\libs\PHP-MySQLi-Database-Class-master\MysqliDb.php на линии 823

Запрос: Подключение к базе данных

>$carsBetweenDates = $db->rawQuery 
('SELECT car_id FROM gm_cars WHERE car_id NOT IN 
    (SELECT reserve_car_id FROM gm_reservations 
    WHERE reserve_dropOff > ? AND reserve_dropOff <= ? 
    UNION 
    DISTINCT SELECT reserve_car_id FROM gm_reservations 
     WHERE reserve_pickUp >= ? AND reserve_pickUp < ?)', 
     Array('2014-12-20 20:00:00', '2014-12-22 20:00:00', 
     '2014-12-20 20:00:00', '2014-12-22 20:00:00')); 

Я не вижу ошибки. Спасибо. Извините за мой английский.

ответ

0

Вы можете попробовать вызвать функцию так:

$db->rawQuery('QUERY', array(), FALSE); 

Я думаю, что дезинфицирующие повреждает ваш запрос (он может лишить HTML символов, в вашем случае <> условия)

Предполагая, что это является класс: https://github.com/joshcam/PHP-MySQLi-Database-Class/blob/master/MysqliDb.php

+0

спасибо за ваш ответ –

0

Попробуйте изменить запрос, чтобы упростить его. Прежде всего вы объединить эти две таблицы в одну, а затем инвертировать условия, чтобы удалить частично «NOT IN» Дополнительные

SELECT gm_cars.car_id 
FROM gm_cars LEFT JOIN gm_reservations 
ON gm_cars.car_id = gm_reservations.reserve_car_id 
WHERE (reserve_dropOff <= ? OR reserve_dropOff > ?) 
    AND (reserve_pickUp < ? OR reserve_pickUp >= ?) 
    AND gm_cars.car_id NOT IN Array('...') 
GROUP BY gm_cars.car_id 

Одна вещь, я предполагаю, что вы собираетесь заменить «?» со значениями в конечном запросе, если вы хотите получить более общий запрос, который вы можете сделать что-то вроде этого: (пример в PHP)

$queryStaff = "SELECT STAFF.id FROM STAFF WHERE name = '" . $your_variable . "'" 
+0

спасибо за ваш ответ –

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