2013-09-12 2 views
0

У меня есть функция PHP, которая принимает параметр под названием $ letter, и я хочу установить значение по умолчанию для параметра, которое является «любым числом или любым символом». Как я могу это сделать?Использование SQL как для запроса шаблона

Это мой запрос кстати.

select ID from $wpdb->posts where post_title LIKE '".$letter."% 

Я попытался разместить на WordPress stackexchange и они сказали мне, чтобы разместить его здесь, как это SQL/общее программирование вопрос, специфичный для WordPress.

Спасибо! Ответы высоко ценится :)

+1

значение по умолчанию woul d будет '%', то? Или просто пуст, так как у вас уже есть '%' в этом запросе. –

+0

Какую базу вы используете? Я добавил возможное решение для MySQL – rslite

+0

Похоже, что этот код будет уязвим для SQL-инъекций. Это очень плохо. –

ответ

0

Для того, чтобы соответствовать только цифры или буквы (я не уверен, что именно вы имеете в виду символами), вы можете использовать оператор RLIKE в MySQL:

SELECT ... WHERE post_title RLIKE '^[A-Za-z0-9]' 

Это означает, что по умолчанию $letter будет [A-Za-z0-9] - это означает, что все буквы от a до z (оба случая) и числа от 0 до 9. Если вам нужны специальные символы, вы можете добавить их в список (но - должен быть первым или последним, поскольку в противном случае он имеет особое значение диапазона). Символ ^ указывает, что он находится в начале строки. Так что вам будет нужно что-то вроде:

"select ID from $wpdb->posts where post_title RLIKE '^".$letter."%'" 

Конечно, я должен предупредить вас от атак SQL инъекций, если вы строите свой запрос, как это без дезинфицирующего вход (убедившись, что он не имеет никакого ' (апостроф) в . он

Редактировать

чтобы соответствовать название, которое начинается с номером просто использовать [0-9] - это означает, что он будет соответствовать одной цифре от 0 до 9

+0

Привет, спасибо за ответ, на самом деле это моя проблема прямо сейчас. он соответствует всем, когда я хочу, это просто любое число или любой символ. –

+0

Здравствуйте, большое спасибо за это! :) как насчет, если я просто хочу какой-то номер? –

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