Как использовать подготовленные заявления в многопользовательском веб-сайте? - PullRequest
2 голосов
/ 16 января 2020

Где (в коде) разместить элементы готовых утверждений на веб-сайте, где многие пользователи взаимодействуют с базой данных?

Я преобразовываю свой код из использования $mysqli->escape_string в использование подготовленных утверждений, поскольку люди говорят, что это лучший способ защиты от sql инъекций.

Это просто удаляет все $mysqli->escape_string s, а также заменяет другие части моего кода следующим образом:

$mysqli->query("update `users` set `email`='$newEmail' where `userid`={$_SESSION['userid']} limit 1");

заменяется следующим:

$stmt = $mysqli->prepare("update `users` set `email`=? where `userid`=? limit 1");
$stmt->bind_param('si',$newEmail,$_SESSION['userid']);
$stmt->execute();
$stmt->close();

?

Люди говорят, что подготовленные заявления более эффективны, так как шаблон заявления готовится только один раз, а затем его можно использовать повторно с другими параметрами. Но в замене кода выше не будет ли подготовка шаблона выполняться каждый раз, когда любой пользователь хочет обновить свой адрес электронной почты? Должен ли я вместо этого подготовить все операторы при запуске сервера? И не готовить их снова? (Хотя я не знаю, как это сделать.) Где должны быть prepare, bind_param и close по всему коду моего сайта?

1 Ответ

4 голосов
/ 16 января 2020

Это просто удаление всех $ mysqli-> escape_strings, а также замена переменных на заполнители

Да.

Люди говорят, что подготовленные выражения более эффективны, так как Шаблон выписки готовится только один раз, после чего его можно использовать повторно с разными параметрами.

Забудьте об этом. Невозможно повторно использовать подготовленный оператор между запросами.

Он работает только внутри переменной оператора и, следовательно, применим только в пределах одного PHP экземпляра. Означает, что вы можете использовать его только для повторных вставок / обновлений. И даже там выигрыш не является чем-то значительным.

Это скорее маркетинговый трюк, чем действительно полезная функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...