Можете ли вы поместить заполнители в выбранную часть запроса, используя PDO? - PullRequest
1 голос
/ 28 ноября 2011

Я планирую использовать механизм PDO prepare() и execute() для предотвращения атаки SQL-инъекцией.

Обычно заполнители в SQL находятся в условной части.

Например select name, age from members where age > ? and gender = 'f';

Однако, возможно ли поместить заполнители в выделенную часть?

select name, age, ? from members where age > ? and gender = 'f';

Я знаю, что не могу поместить имена столбцов, но могу ли я поставитьпостоянная?как

select name, age, 'foo' from members where age > ? and gender ='f';

Спасибо.

1 Ответ

0 голосов
/ 28 ноября 2011

Неа.PDO не может очистить имена столбцов или таблиц.

Если у вас действительно есть для использования динамических имен таблиц, самый безопасный способ справиться с ними - это не проверить, действительно ли они существуют в таблице,и вставляем их в запрос обычным способом.

Псевдокод:

$fieldname = make_sure_this_field_really_exists($_GET["fieldname"]);    
$PDO->prepare("select name, age, `$fieldname` from members where age > ? and gender = 'f';" ... );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...