Описание тега mysqli
В mysqli
Расширение PHP является преемником mysql
Расширение PHP. Это обеспечивает отображение низкого уровня к MySQL в интерфейс C. Основные функции расширения:
- Объектно-ориентированный интерфейс
- Поддержка подготовленных отчетов
- Поддержка нескольких операторов
- Сопровождение сделок
- Расширенная поддержка отладки
- Поддержка встроенного сервера
Прекращение поддержки расширения mysql
В
mysql
Расширение было объявлено устаревшим в версии PHP 5.5 и удалено в версии 7.0. Код, написанный для современных серверов, должен использоватьmysqli
илиpdo
расширения вместо этого.
Помимо объектно-ориентированного интерфейса, большинство mysqli
функции также предоставляют эквивалентный процедурный интерфейс через функции с префиксом mysqli_
. Однако эти функции в первую очередь предназначались для пользователей, переходящих от устаревшего кода с использованием расширения mysql. Ожидается, что код в современной среде будет использовать объектно-ориентированное программирование.
В mysqli
поддержка подготовленных операторов расширения использует ?
заполнители, привязанные к ссылкам на переменные для ввода, и ссылки на переменные, привязанные к столбцам при выборке выходных строк. Обратите внимание, что для использования некоторых аспектовmysqli
подготовленные операторы (в первую очередь mysqli_stmt_get_result), ваша установка PHP должна использовать собственный драйвер Mysql (mysqlnd
), который также обеспечивает улучшенную производительность по сравнению со старой клиентской библиотекой MySQL.
Простой MySQLi SELECT
пример запроса:
В следующем примере извлекаются 2 выходных столбца из SELECT
запрос с использованием как целого, так и строкового параметра.
// A form post has supplied the input values in:
// $_POST['fruit']
// $_POST['age']
// Enable mysqli error reporting. Errors will be reported as exceptions
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
// Open a new connection to the MySQL server.
$mysqli = new mysqli("host", "user", "password", "database");
// Set the correct connection charset
$mysqli->set_charset('utf8mb4');
// SQL string with input placeholders
$SQL = "SELECT firstName, email FROM users WHERE favorite_fruit = ? AND age > ?";
// Prepare the statement
$stmt = $mysqli->prepare($SQL);
// Bind parameters:
// "s" indicates a string parameter (favorite_fruit)
// "i" indicates an integer parameter (age)
$stmt->bind_param("si", $_POST['fruit'], $_POST['age']);
// Execute the statement
$stmt->execute();
// Bind result variables to fetch the columns returned:
// Supply one variable for each column. Variables are bound by reference
$stmt->bind_result($firstName, $email);
// Fetch rows:
// On each loop iteration, the variables $firstName, $email will be
// populated with values from the currently fetched row.
while ($stmt->fetch()) {
echo "Name: $firstName, Email: $email\n";
}
// Close the prepared statement (optional)
$stmt->close();