Где (в коде) разместить элементы готовых утверждений на веб-сайте, где многие пользователи взаимодействуют с базой данных?
Я преобразовываю свой код из использования $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
по всему коду моего сайта?