Я читал, как параметризованные запросы помогают предотвратить SQL-инъекции, однако, к моему удивлению, реализовать их оказалось сложнее, чем я предполагал.
Я попытался выполнить простой оператор SELECT, используя mysqli в PHP, используя параметризованный запрос, и я получаю фатальную ошибку PHP, утверждающую, что я вызвал неизвестный метод при попытке получить результат запроса. После поиска в Google говорится, что мне нужно установить mysqlnd
и включить его для получения результата. Я также обнаружил, что mysqlnd
должен быть установлен по умолчанию на PHP 5.4 или более поздней версии. В настоящее время я использую 5.4.3, поэтому я ожидал, что это сработает.
Во-первых, мне нужно mysqlnd
использовать параметризованные запросы или это необходимо только для более продвинутых пользователей и запросов? Есть ли метод, который вы можете использовать без mysqlnd для получения результата? Во-вторых, если мне это нужно, как мне включить его в моем PHP?
PHP:
$stmt = $con->prepare("SELECT some_id FROM some_table WHERE name = ? AND user_id = '$user_id'");
$stmt->bind_param('s', $name);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// do something with result
}
Ошибка:
Неустранимая ошибка PHP: вызов неопределенного метода mysqli_stmt::get_result()