Расширение mysqli PHP является драйвером базы данных PHP. Не путать с базой данных MySQL.

Расширение PHP mysqli является преемником расширения PHP mysql. Он обеспечивает низкоуровневое отображение на 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();

Похожие теги