Нужно ли mysql_real_escape_string () при использовании подготовленных операторов? - PullRequest
20 голосов
/ 04 июня 2011

Для этого запроса необходимо использовать mysql_real_escape_string?

Есть улучшения или запрос в порядке?

$consulta = $_REQUEST["term"]."%";

($sql = $db->prepare('select location from location_job where location like ?'));

$sql->bind_param('s', $consulta);
$sql->execute();
$sql->bind_result($location);

$data = array();

while ($sql->fetch()) {
    $data[] = array('label' => $location);
}

В этом случае важна скорость запроса.

1 Ответ

23 голосов
/ 04 июня 2011

Нет, подготовленные запросы (при правильном использовании) обеспечат правильное экранирование данных для безопасного запроса. Вы как бы используете их правильно, просто нужно изменить одну маленькую вещь. Потому что вы используете '?' заполнитель, лучше передать параметры через метод execute.

$sql->execute(array($consulta));

Просто будьте осторожны, если вы выводите это на свою страницу, санация базы данных не означает, что она будет безопасна для отображения в HTML, поэтому запустите на ней также htmlspecialchars ().

...