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

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 $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); ?>

