SELECT с полем даты в предложении WHERE завершается неудачно через Ajax

JQuery строитель (из http://querybuilder.js.org/ ) используется, чтобы позволить пользователю выбрать дату и дополнительно выбрать данные для DataTables (datatables.net/) с помощью функции PHP.

Функция DataTables и особенно Ajax выглядит так:

var table = $(id).DataTable({
serverSide: true,
searching: true,
processing: true,,
ajax: {
url: "controllers/myAjax.php",
type: "POST",
data: result
}
});

Объект передан как данные определяется queryBuilder и добавляется к моей строке запроса в сценарии PHP. Чтобы закрепить ситуацию, я передаю данные как обычный SQL (http://querybuilder.js.org/plugins.html#import-export). В моем тестовом случае это:

WHERE birthdate < '1990-01-01'

Это приведет к запросу SELECT:

SELECT * from table_1 WHERE birthdate < '1990-01-01'

Этот запрос выдает ошибку MySQL:

"[...] check the manual that corresponds to your MySQL
server version for the right syntax to use near '\'1990-01-01\' "

Очевидно, что дата не может быть правильно экранирована. Но когда я ввожу именно этот запрос в свою рабочую среду MySQL, сервер выполняется и возвращает правильный набор результатов. Более того, рабочему столу все равно, буду ли я использовать одинарные кавычки (‘) или двойные кавычки («).

Далее я попытался вручную удалить эти escape-символы с помощью PHP str_replace. Затем функция возвращает значения, но, очевидно, интерпретируется как int и прерывает другие запросы (например, равный идентификатор). То же самое касается msqli.real-escape-string (http://php.net/manual/de/mysqli.real-escape-string.php).

Другой подход, который я попробовал, состоял в том, чтобы немного изменить dataType функции Ajax — но в основном я отправляю закодированные данные формы, так что тип по умолчанию для этого должен подойти?

Так почему (только) поле даты экранируется неправильно? Есть ли какое-нибудь быстрое решение для этого, прежде чем мне придется написать свои собственные функции PHP для доступа к БД?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]