SQL — Запрос не выполняется *, если * строка не разбита на цифры и буквы, а затем объединена

У меня есть следующий запрос SQL, который возвращает счет по DocNumber:

"SELECT * FROM Invoice WHERE DocNumber = '" . $id . "'"

Вот, $id содержит строку как следующие примеры:

M10045
M10046
M10046

Этот запрос не выполняется если Я отделяю $id в 'M' а также '10045' и объединить их в запросе так:

preg_match('/\d+/', $id, $id_number, PREG_OFFSET_CAPTURE);
preg_match('/[A-Z]+/', $id, $id_letter, PREG_OFFSET_CAPTURE);

"SELECT * FROM Invoice WHERE DocNumber = '" . $id_letter[0][0] . $id_number[0][0] . "'"

Что может вызвать такие проблемы?

Обратите внимание, используя $id в запросе возвращает пустой массив из-за отсутствия совпадений. Разделение буквы и цифры на части $id возвращает объект счета.

1

Решение

Пожалуйста, попробуй

$id =  trim($id);

или же

$id =  preg_replace('/[^\w]/', '', $id);
$query = "SELECT * FROM Invoice WHERE DocNumber = '$id'";

удалить все символы, которые не являются тире или подчеркиванием AlphaNum.

2

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

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

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