У меня есть следующий запрос 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
возвращает объект счета.
Пожалуйста, попробуй
$id = trim($id);
или же
$id = preg_replace('/[^\w]/', '', $id);
$query = "SELECT * FROM Invoice WHERE DocNumber = '$id'";
удалить все символы, которые не являются тире или подчеркиванием AlphaNum.
Других решений пока нет …