2012-01-13 2 views
2

Я пробовал этот запрос Google, но он не отображался (возможно, потому, что {был разобран как специальный символ или проигнорирован).Что делает {} в MySQL-запросах?

Я видел запрос сделанный на примере где-то, что выглядит следующим образом:

SELECT `id` FROM areas WHERE `name` = '{$listing['cityname']}' 

И это было в PHP (так внутри mysql_query())

Моя догадка она ищет в строчной (то же самое как LOWER( имя ) AS...), но я хочу быть на 100% уверенным, как это должно работать.

+0

Это связано с «инъекционными атаками». Параметры, пожалуйста! (Кроме того, укажите * полный * минимальный контекст кода, так как он сделает вопрос и ответы более полезными для людей в будущем :) –

ответ

10

Это синтаксис PHP, а не синтаксис MySQL. Он позволяет интерполировать complex expressions в строке с двумя кавычками. Таким образом, в вашем примере будет оцениваться индекс массива $listing['cityname'] и его значение, используемое в вашем запросе.

Это не имеет никакого отношения к SQL вообще.

Кстати, это уязвимая уязвимость SQL-инъекций, если предположить, что значение массива еще не было сбежало с чем-то вроде mysql_real_escape_string(). Большинство людей используют prepared statements для создания SQL-запросов в эти дни.

+0

Каким будет пример такой интерполяции? Можете привести короткий пример, пожалуйста. Благодарю. –

+4

@Shamim Hafiz: В этом вопросе уже есть пример. – BoltClock

+0

Yup, но это чисто внутренний процесс в моей работе cron, поэтому безопасность в этом случае не является проблемой. Все остальные разделы с пользовательским вводом имеют функцию mysql_real_escape_string(). – jeffkee