«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно использовать подготовленные операторы в MySQL с PHP?

Как эффективно использовать подготовленные операторы в MySQL с PHP?

Опубликовано 21 декабря 2024 г.
Просматривать:666

How to Effectively Use Prepared Statements in MySQL with PHP?

Начало работы с подготовленными операторами в MySQL

Подготовленные операторы — важный инструмент для написания безопасных и эффективных SQL-запросов. В этой статье мы рассмотрим, как использовать подготовленные операторы с mysqli, расширением MySQLi в PHP.

Синтаксическая ошибка: необъектное выполнение

Ошибка, с которой вы столкнулись , «Неустранимая ошибка: вызов функции-члена Execute() для объекта, не являющегося объектом», обычно указывает на то, что переменная $stmt не инициализирована должным образом или не является объектом. Вот как это исправить:

$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");

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

Привязка Параметры

Подготовленные операторы используют маркеры параметров (например, ?) для представления входных значений. Эти значения необходимо привязать к переменным PHP перед выполнением оператора. Вот пример:

$name = 'one';
$age = 1;
$stmt->bind_param('si', $name, $age);

В этом примере мы связываем параметр name как строку ('s'), а параметр age как целое число ('i ').

Выполнение оператора

После привязки параметров вы можете выполнить подготовленный оператор:

$stmt->execute();

Обработка ошибок

Подготовленные операторы обеспечивают лучшую обработку ошибок, чем прямые запросы SQL. Используйте метод mysqli_stmt::error для получения сообщений об ошибках:

if ($stmt->error) {
    die("Error: " . $stmt->error);
}

Полный пример

Вот полный пример вставки, выбора и обработки ошибок:

// Establish connection
$mysqli = new mysqli("localhost", "root", "root", "test");

// Prepare and bind parameters
$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");
$stmt->bind_param('si', $name, $age);

// Insert multiple rows
$name = 'one';
$age = 1;
$stmt->execute();
$name = 'two';
$age = 2;
$stmt->execute();

// Prepare and execute select statement
$stmt = $mysqli->prepare("SELECT * FROM users");
$stmt->execute();

// Bind result
$result = $stmt->get_result();

// Process results
while ($row = $result->fetch_assoc()) {
    echo $row['name'] . ", " . $row['age'] . "
\n"; } // Handle errors if ($stmt->error) { die("Error: " . $stmt->error); }

Используя подготовленные операторы, вы можете предотвратить атаки SQL-инъекций и писать более надежные и эффективные SQL-запросы.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3