PHP MySQLФункции: mysqli_query и mysqli_connect

⚡ Умное резюме

MySQLИспользование PHP и других методов доступа к базам данных позволяет PHP-скрипту подключаться к базе данных, выполнять запросы и считывать результаты. В этом пошаговом руководстве рассматриваются основные функции mysqli, полные примеры CRUD-операций, подготовленные запросы для обеспечения безопасности, а также альтернативные методы доступа PDO и ODBC.

  • ???? Подключение: mysqli_connect открывает ссылку на MySQL сервер, а функция mysqli_select_db выбирает базу данных для работы.
  • 🇧🇷 Выполняемые запросы: Функция mysqli_query выполняет операторы INSERT, SELECT, UPDATE и DELETE в выбранной базе данных.
  • 📄 Результаты чтения: Функция mysqli_num_rows подсчитывает количество возвращаемых строк, а функция mysqli_fetch_array считывает каждую строку в массив для вывода.
  • 🔄 ЖЕСТОКИЙ OperaЦИИ: В совокупности эти функции создают, читают, обновляют и удаляют записи — четыре основные операции базы данных.
  • 🛡️ Подготовленные заявления: Привязка значений с помощью подготовленных запросов предотвращает SQL-инъекции, в отличие от построения запросов путем конкатенации пользовательского ввода.
  • 🧩 PDO и ODBC: PDO предоставляет единый интерфейс для работы со многими системами управления базами данных, в то время как ODBC подключается к таким источникам, как... Microsoft Доступ.
  • 🤖 AI-помощь: Инструменты искусственного интеллекта могут преобразовывать устаревший код mysqli в PDO с подготовленными запросами и отлаживать ошибки подключения.

PHP MySQL Доступ к базе данных

PHP обладает богатым набором встроенных функций для управления MySQL базы данных.

Функция PHP mysqli_connect

Функция PHP mysqli_connect используется для подключения к MySQL сервер базы данных.

Он имеет следующий синтаксис.

<?php
$db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password);
?>

ВОТ,

  • «$db_handle» — это переменная ресурса подключения к базе данных.
  • “mysqli_connect(…)” — это функция для подключения к базе данных в PHP.
  • “$db_server_name” — это имя или IP-адрес сервера, на котором размещена база данных. MySQL сервера.
  • “$db_user_name” — это допустимое имя пользователя в базе данных. MySQL сервера.
  • “$db_password” — это действительный пароль, связанный с именем пользователя в базе данных. MySQL сервера.

Функция PHP mysqli_select_db

Функция mysqli_select_db используется для выбора базы данных.

Он имеет следующий синтаксис.

<?php
mysqli_select_db($db_handle, $database_name);
?>

ВОТ,

  • «mysqli_select_db(…)» — это функция выбора базы данных, которая возвращает true или false.
  • «$db_handle» — это ссылка для подключения к серверу.
  • «$database_name» — имя базы данных.

PHP-функция mysqli_query

Функция mysqli_query используется для выполнения SQL запросы.

Данная функция может использоваться для выполнения следующих типов запросов:

  • Вставить
  • Выбрать
  • Обновление ПО
  • Удалить

Он имеет следующий синтаксис.

<?php
mysqli_query($db_handle, $query);
?>

ВОТ,

  • «mysqli_query(…)» — это функция, выполняющая SQL-запросы.
  • «$db_handle» — это ссылка для подключения к серверу.
  • «$query» — SQL-запрос, который необходимо выполнить.

Функция PHP mysqli_num_rows

Функция mysqli_num_rows используется для получения количества строк, возвращаемых запросом на выборку.

Он имеет следующий синтаксис.

<?php
mysqli_num_rows($result);
?>

ВОТ,

  • «mysqli_num_rows(…)» — функция подсчета строк.
  • «$result» — это набор результатов mysqli_query.

Функция PHP mysqli_fetch_array

Функция mysqli_fetch_array используется для извлечения массивов строк из набора результатов запроса.

Он имеет следующий синтаксис.

<?php
mysqli_fetch_array($result);
?>

ВОТ,

  • «mysqli_fetch_array(…)» — функция для выборки массивов строк.
  • «$result» — это результат, возвращаемый функцией mysqli_query.

PHP-функция mysqli_close

Функция mysqli_close используется для закрытия открытого соединения с базой данных.

Он имеет следующий синтаксис.

<?php
mysqli_close($db_handle);
?>

ВОТ,

  • Функция PHP «mysqli_close(…)» закрывает соединение.
  • «$db_handle» — это ресурс подключения к серверу.

PHP MySQL Примеры операций CRUD

Рассмотрим практические примеры, демонстрирующие использование этих функций. В этом руководстве предполагается наличие знаний в данной области. MySQL и SQL; если эти термины вам незнакомы, обратитесь к нашей документации. MySQL и учебники по SQL.

Мы создадим простую базу данных под названием my_personal_contacts, содержащую всего одну таблицу. Подключитесь к MySQL используя ваш любимый инструмент доступа, например MySQL В Workbench или phpMyAdmin создайте базу данных с именем my_personal_contacts, затем выполните приведенный ниже скрипт для создания таблицы и вставки в нее фиктивных данных.

CREATE TABLE IF NOT EXISTS `my_contacts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`full_names` varchar(255) NOT NULL,
`gender` varchar(6) NOT NULL,
`contact_no` varchar(75) NOT NULL,
`email` varchar(255) NOT NULL,
`city` varchar(255) NOT NULL,
`country` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES
(1, 'Zeus', 'Male', '111', 'zeus@olympus.mt.co', 'Agos', 'Greece'),
(2, 'Anthena', 'Female', '123', 'anthena@olympus.mt.co', 'Athens', 'Greece'),
(3, 'Jupiter', 'Male', '783', 'jupiter@planet.pt.co', 'Rome', 'Italy'),
(4, 'Venus', 'Female', '987', 'venus@planet.pt.co', 'Mars', 'Italy');

Чтение записей из базы данных

Теперь мы создадим программу, которая будет выводить записи из базы данных.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "SELECT * FROM my_contacts"; // SQL select query
$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement

if (!$result)
    die("Database access failed: " . mysqli_error($dbh));

$rows = mysqli_num_rows($result); // get number of rows returned

if ($rows) {
    while ($row = mysqli_fetch_array($result)) {
        echo 'ID: ' . $row['id'] . '<br>';
        echo 'Full Names: ' . $row['full_names'] . '<br>';
        echo 'Gender: ' . $row['gender'] . '<br>';
        echo 'Contact No: ' . $row['contact_no'] . '<br>';
        echo 'Email: ' . $row['email'] . '<br>';
        echo 'City: ' . $row['city'] . '<br>';
        echo 'Country: ' . $row['country'] . '<br><br>';
    }
}
mysqli_close($dbh); // close the database connection
?>

Выполнение приведенного выше кода возвращает результаты, показанные на диаграмме ниже.

PHP: MySQL функции

Вставка новых записей

Рассмотрим теперь пример добавления новой записи в нашу таблицу. Приведенный ниже код демонстрирует реализацию.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)";
$sql_stmt .= " VALUES(7,8,9,10,11,12)";

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Adding record failed: " . mysqli_error($dbh));

echo "Poseidon has been successfully added to your contacts list";
mysqli_close($dbh); // close the database connection
?>

Выполнение приведенного выше кода выдаст сообщение «Посейдон успешно добавлен в ваш список контактов». Вернитесь к примеру запроса SELECT и снова получите список контактов, чтобы проверить, добавлен ли Посейдон в ваш список.

Обновление записей

Рассмотрим теперь пример обновления записи в базе данных. Предположим, что Посейдон изменил свой контактный номер телефона и адрес электронной почты.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "UPDATE `my_contacts` SET `contact_no` = 8, `email` = 9";
$sql_stmt .= " WHERE `id` = 5"; // SQL update query

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Updating record failed: " . mysqli_error($dbh));

echo "ID number 5 has been successfully updated";
mysqli_close($dbh); // close the database connection
?>

Удаление записей

Рассмотрим теперь пример удаления записей из базы данных. Предположим, что у Венеры есть судебный запрет против нас, и мы должны удалить ее контактную информацию из нашей базы данных. база данных.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$id = 4; // Venus's ID in the database
$sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; // SQL delete query

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Deleting record failed: " . mysqli_error($dbh));

echo "ID number $id has been successfully deleted";
mysqli_close($dbh); // close the database connection
?>

Предотвращение SQL-инъекций с помощью подготовленных запросов

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

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody');
$stmt = mysqli_prepare($dbh, "INSERT INTO my_contacts (full_names, email) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ss", $name, $email);
$name = 'Poseidon';
$email = 'poseidon@sea.oc';
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($dbh);
?>

Здесь вопросительные знаки являются заполнителями, а bind_param безопасно связывает значения имени и электронной почты. База данных рассматривает их строго как данные, поэтому подготовленные запросы, доступные как в mysqli, так и в PDO, являются рекомендуемым способом выполнения любого запроса, использующего пользовательский ввод.

PHP Data Access Object (PDO)

PDO — это класс, позволяющий нам взаимодействовать с различными системами управления базами данных, такими как... MySQL, PostgreSQLи MS SQL Server, используя тот же интерфейс.

В приведенном ниже коде показан метод доступа к базе данных с использованием объекта PDO.

Примечание: приведенный ниже код предполагает знание языка SQL, массивов, обработки исключений и цикла foreach.

<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts", 'root', 'melody');

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');

$sql_stmt = "SELECT * FROM `my_contacts`";
$result = $pdo->query($sql_stmt);
$result->setFetchMode(PDO::FETCH_ASSOC);
$data = array();
foreach ($result as $row) {
$data[] = $row;
}
print_r($data);
}
catch (PDOException $e) {
echo $e->getMessage();
}
?>

ВОТ,

  • “try{…}catch{…}” — это блок обработки исключений.
  • Функция “$pdo = new PDO(“mysql…” создает экземпляр объекта PDO и передает драйвер базы данных, имена сервера и базы данных, идентификатор пользователя и пароль.
  • Функция “$pdo->setAttribute…” устанавливает режим обработки ошибок PDO на генерацию исключений.
  • “$pdo->exec('SET NAMES…' устанавливает формат кодировки

Доступ к данным через PHP ODBC

ODBC — это аббревиатура от Open Database Connectivity (открытое подключение к базам данных). Его базовый синтаксис выглядит следующим образом.

<?php
$conn = odbc_connect($dsn, $user_name, $password);
?>

ВОТ,

  • «odbc_connect» — это встроенная функция PHP.
  • «$dsn» — это имя источника данных ODBC.
  • Параметр «$user_name» является необязательным и используется для имени пользователя ODBC.
  • Параметр «$password» является необязательным и используется для ввода пароля ODBC.

В приведенном ниже примере предполагается, что вы используете Windows и создали ODBC-соединение с Northwind. Microsoft Доступ к базе данных с именем northwind.

<?php
$dbh = odbc_connect('northwind', '', '');
if (!$dbh) {
exit("Connection Failed: " . $dbh);
}
$sql_stmt = "SELECT * FROM customers";
$result = odbc_exec($dbh, $sql_stmt);
if (!$result) {
exit("Error accessing records");
}
while (odbc_fetch_row($result)) {
$company_name = odbc_result($result, "CompanyName");
$contact_name = odbc_result($result, "ContactName");
echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>";
}
odbc_close($dbh);
?>

Часто задаваемые вопросы (FAQ)

mysqli работает только с MySQL PDO предлагает как процедурный, так и объектный стили работы с базами данных. PDO работает со многими базами данных через единый интерфейс и поддерживает именованные заполнители. Оба поддерживают подготовленные запросы; PDO более портативен для работы с различными движками.

Нет. Оригинальное расширение mysql_* было удалено в PHP 7. Используйте вместо него mysqli или PDO. Оба активно поддерживаются, поддерживают подготовленные запросы и защищают от рисков внедрения кода, характерных для старого расширения.

Перехватите ошибку и покажите пользователю общее сообщение, сохраняя при этом подробности в приватном режиме. Не выводите вывод mysqli_error посетителям, поскольку он может раскрыть имена таблиц и их структуру, что может быть полезно злоумышленнику.

Да. Вставьте скрипт mysqli, и ИИ сможет переписать его, используя PDO, заменить конкатенированные запросы связанными параметрами и добавить обработку ошибок в блоке try-catch. RevПросмотрите заполнители и протестируйте каждый запрос после этого.

Да. Сообщите об ошибке и коде подключения, и ИИ сможет обнаружить неверные учетные данные, некорректный хост или порт, отсутствующую базу данных или отключенный драйвер, а затем предложить исправленные настройки для проверки.

Подведем итог этой публикации следующим образом: