• Связь с базами данных MySQL. Основы работы с MySQL в PHP Соединение с бд php

    27.12.2021

    Помню те времена, когда я еще не знал что такое mysql и часто искал в интернете такие статьи. Но, они почему-то редко находились. Вот теперь решил выложить такую, чтобы полезных статей о mysql и php стало на одну больше. Постараюсь написать все на доступном языке.

    начало работы с mysql и php

    Итак, для начала нам потребуется локальный сервер, для того чтобы можно было запускать php скрипты и подключаться к базе (дальше буду называть БД, что означает «база данных»). Если у вас еще нет локального сервера, то сначала следует прочитать Установка и настройка localhost , а потом уже приступать к изучению БД mysql и ее СУБД (средство управления базой данных).

    Если у вас уже есть этот сервер, то делаем так. Для начала хочу познакомить вас с СУБД PhpMyAdmin , она позволяет управлять (добавлять, удалять, изменять) записями в БД.

    Это главная страница СУБД PhpMyAdmin . Отсюда вы можете создать свою БД, и хранить в ней необходимые записи. Это очень удобно при создании сайтов, так как информация структурирована и вы можете очень быстро получить любую запись из БД.

    Как уже было сказано, первая часть статьи, знакомство с mysql и phpmyadmin . Думаю теперь вы поняли что такое mysql и мы можем приступать к изучению функционала phpmyadmin. Для начала работы, нам потребуется создать саму БД (базу данных). У нее будет свое имя, по которому мы потом будем ее искать.

    Вот общая структура строения базы данных:

    Для того чтобы создать БД, впишите в поле ввода под строкой «Создать новую БД» (на главной странице PhpMyAdmin) любое имя (не кириллица!) для будущей базы. Я создам базу данных с именем «baza» . Теперь, следуя схеме строения БД, нам нужно сделать таблицу. Для этого после создания базы, у вас будет такое окно:

    Здесь я создаю таблицу с именем users и 3 полями в ней. Дальше phpmyadmin попросит нас задать структуру для каждого поля:

    Здесь в столбце «Поле» нужно указать имя, в «Тип» указываем тип данных которые будут там храниться (INT - это число, VARCHAR - строка или небольшой(!) текст). В «Дополнительно» указываем полю с именем «id» параметр «auto_increament» , что означает, оно будет увеличиваться каждый раз при вставке каких-либо данных, и задаем ему параметр «Первичный ключ» (ставим кругляшок), это значит, что по первому столбцу мы сможем однозначно идентифицировать поле.

    «Однозначно идентифицировать поле» - значит даже если имя и фамилия будут одинаковы, столбец «id» будет иметь разные значения (так как он автоматически увеличивается на единицу каждый раз).

    Теперь нажимаем «Сохранить». Тем самым мы создали таблицу users , в которой можем хранить имя и фамилию (id не нужно вставлять, mysql сделает все за нас), в БД users . Таблицу мы создавали для хранения записей. А как их туда вставлять? Читайте ниже 😉

    Выбираем в меню «Вставить» и пишем нужные значения в необходимые поля. Теперь как удалить или изменить значения в базе данных mysql с СУБД PhpMyAdmin… Для удаления просто перейдите в меню «Обзор» и нажмите красный крестик напротив записи:

    А для редактирования нажмите на карандаш и замените необходимые поля. Ну вот, на этом урок закончен. Теперь вы можете управлять базой данных mysql используя PhpMyAdmin. В следующем уроке, я научу вас хранить, получать, удалять и обновлять данные в базе используя php . Это очень удобно и практично.

    Работа с базой данных mysql из php

    Итак, для начала нужно научиться подключаться к уже заведомо созданной БД. Для этого используется вот такой код:

    В вышеизложенном коде, я подключался к серверу localhost используя логин root который не требует пароля (поэтому его не указываем). После подключения к базе, мы можем проводить все те операции которые выполняли в СУБД phpmyadmin. То есть вставку, удаление, изменение и получение различной информации. Теперь по пунктам:

    Вставка записей в базу данных SQL на php

    $query="INSERT INTO `таблицу` (`указываем поле`,`указываем поле`) VALUES ("любое значение","любое значение")"; $result=mysql_query($query); if($result==true) { echo "Успешно!"; } else { echo "Ошибка!
    ".mysql_error(); }

    То есть вставка производится функцией INSERT . Если все прошло успешно, то mysql вернет результат true, или иначе - false.

    Полей можно указывать хоть сколько, главное чтобы все они существовали в БД. То есть, к примеру существует таблица в которой есть поля «name» , «surname» и «city» . Для вставки в нее значений будем использовать такой код:

    $query="INSERT INTO `users` (`name`,`surname`,`city`) VALUES ("Ruslan","Huzin","Kokshetau")"; $result=mysql_query($query); if($result==true) { echo "Успешно!"; } else { echo "Ошибка!
    ".mysql_error(); }

    Удаление записей из базы данных SQL на php

    Удаление выполняется функцией DELETE . Для этого будет примерно вот такой код:

    $query="DELETE FROM `users` WHERE `name`="Ruslan" "; $result=mysql_query($query); if($result==true) { echo "Успешно!"; } else { echo "Ошибка!
    ".mysql_error(); }

    То есть мы удалим из таблицы users все строки (ну или одну), где столбец name равен значению Ruslan .

    Изменение значений в базе данных MySQL на php

    Также мы можем вносить изменения в уже существующие записи в таблице. К примеру нам надо заменить значение столбца name в строке, где столбец surname имеет значение Huzin . Для этого выполняем такой код:

    $query="UPDATE `users` SET `name`="myname" WHERE `surname`="Huzin" "; $result=mysql_query($query); if($result==true) { echo "Успешно!"; } else { echo "Ошибка!
    ".mysql_error(); }

    Получение значений из базы данных

    Теперь самое интересное. Раз мы записали что-то, то ведь должны и получить обратно? К примеру нам нужно достать из таблицы users всю строку где столбец name равен Ruslan . Для этого нам потребуется чуть другой код, нежели в первых примерах. Вот собственно и он:

    $query="SELECT * FROM WHERE `name`="Ruslan" "; $result=mysql_query($query); if($result==true) { echo "Успешно!"; } else { echo "Ошибка!
    ".mysql_error(); } $data=mysql_fetch_array($result); /* Теперь в переменной хранятся данные из таблицы */

    Тут нам потребовалась еще одна функция, для записи выбранных данных в переменную (массив) на php. Для того что обратиться к выбранной строке, мы пишем так:

    $data["имя столбца"]

    то есть, чтобы достать фамилию из выбранной строки (где имя было Ruslan), мы на вывод должны написать:

    echo $data["surname"];

    А при выборке из таблицы, писали SELECT * , эта звездочка означает что нужно выбрать все столбцы из строки. Если нам надо, к примеру, выбрать только surname , пишем SELECT `surname` . А для выборки сразу нескольких строк из таблицы, потребуется еще и цикл для их вывода. Это в том случае, если к примеру, строк со столбцом Ruslan будет несколько. Вот код:

    $query="SELECT * FROM WHERE `name`="Ruslan" "; $result=mysql_query($query); while($data=mysql_fetch_array($result)) { echo $data["name"]."
    ".$data["surname"]."


    "; }

    Теперь на экран выведутся все строки у которых столбец name равен значению Ruslan .

    Вот вы и познакомились с основными функциями управления базой данных mysql напрямую из php скрипта .

    В данной статье мы рассмотрим способы обращения к таблицам баз данный MySQL с помощью языка запросов SQL. SQL - это аббревиатура, которая так и "раскрывается" - структуризированный язык запросов.
    В языке PHP для это цели существует целый ряд функций с префиксом "mysql". Нам для рассмотрения запросов понадобится не так много из них. Функция, без которой в языке PHP выполнение SQL-запросов было бы просто невозможным:

    Resource mysql_query(запрос)

    Данная функция посылает запрос к базе данных и возвращает в случае успешного обращения идентификатор ресурса.
    Для того чтобы подключиться к базе данных MySQL необходимо выполнить следующую последовательность:

    $host="localhost"; // имя хоста (уточняется у провайдера) $database="db_name"; // имя базы данных, которую вы должны создать $user="user_name"; // заданное вами имя пользователя, либо определенное провайдером $pswd="your_pass"; // заданный вами пароль $dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL."); mysql_select_db($database) or die("Не могу подключиться к базе.");

    Итак mysql_connect() - функция для подключения к серверу MySQL на Вашем хостинге.
    А mysql_select_db() выбирает базу данных на сервере для подключения.
    Иными словами подключаемся к серверу, выбираем базу и начинаем работать.
    Функция die() вызывается в случае ошибки и выводит в окно браузера сообщение, которое вы указали.
    Для завершения работы с базами данных используется функция:

    Mysql_close($dbh);

    Здесь $dbh - дескриптор, которые при соединении возвратила функция mysql_connect .
    Закончив стартовый обзор, начнем рассмотрение собственно SQL-запросов.
    Для этого прежде всего вам необходимо создать базу данных с определенном именем. А в ней создать таблицу, тоже с конкретным именем. В наших примерах будем обращаться к таблице my_sql_table . Чтобы создать эту таблицу давайте выполним в phpmyadmin нашего localhost следующий запрос:

    CREATE TABLE `my_sql_table` (`id` INT NOT NULL , // идентификатор будущих записей таблицы `firstname` VARCHAR(50) NOT NULL , // текстовое поле VARCHAR `surname` VARCHAR(50) NOT NULL , // max длиной 50 символов PRIMARY KEY (`id`) // первичный ключ - идентификатор id);

    Итак таблица создана. Выполним первый запрос, который сразу оформим в виде PHP-кода:

    \n"; echo "Имя: ".$row["firstname"]."
    \n"; echo "Фамилия: ".$row["surname"]."


    \n"; } ?>

    Разберем PHP-код файла firstsql.php . Начнем с собственно запроса к таблицам базы данных (БД).

    $query = "SELECT * FROM `my_sql_table`";

    Данный запрос можно расшифровать так: выбрать из таблицы my_sql_table БД все записи из всех полей. Таким образом знак * после слова SELECT означает "выбрать абсолютно все". Итак, запрос сформирован. Теперь его надо выполнить:

    $res = mysql_query($query);

    В случае успешного выполнения запроса функция mysql_query() вернет нам идентификатор ресурса $res .
    Его мы должны передать в качестве параметра в функцию mysql_fetch_array() . Название этой функции говорит само за себя. Т.е. она формирует и выдает массив по выборке из таблицы БД. В случае нашей таблицы массив будет состоять из числа элементов, равных количествам записей (строк) в таблице и содержать значения id, firstname, surname для каждой строки таблицы. Следовательно, следующий код:

    While($row = mysql_fetch_array($res)) { echo "Номер: ".$row["id"]."
    \n"; echo "Имя:".$row["firstname"]."
    \n"; echo "Фамилия:".$row["surname"]."


    \n"; }

    можно прокомментировать так: пока введенная нами переменная $row получает не нулевые результаты работы функции mysql_fetch_row следует выдать в броузер значение полей $row["id"], $row["firstname"], $row["surname"] с помощью echo .
    Если запрос выполнить так:

    $query = "SELECT firstname FROM `my_sql_table`";

    то это будет означать, что из всех строк выбирается только значения поля firstname.
    Следовательно предыдущий код следует переписать как:

    $res = mysql_query($query); while($row = mysql_fetch_array($res)) { echo "Имя:".$row["firstname"]."
    \n"; }

    Если Вы хотите выбрать строки таблицы с конкретным значением id где фамилия (surname) будет Петров , то запрос перепишется следующим образом:

    $query = "SELECT id FROM `my_sql_table` where surname="Петров"";

    А вот если потребуется узнать фамилию того, кто находится под номером, к примеру, 5, то запрос будет таким:

    $query = "SELECT surname FROM `my_sql_table` where id=5";

    В этом случае Вы знаете, что результатом запроса будет всего одна строка из таблицы. Т.е. нет смысла организовывать цикл с использованием while . И обработка запроса будет следующей

    $res = mysql_query($query); $row = mysql_fetch_row($res); echo "Фамилия пятого человека в списке: ".$row."\n";

    Здесь вместо mysql_fetch_array() мы применили mysql_fetch_row() . Т.е. получить значение поля (или полей) конкретной строки. Поскольку поле у нас было одно - surname - мы можем обратиться к единственному элементу массива $row как $row; .

    Итак, рассмотрим наиболее типичные примеры запросов MySQL. Рассмотрение проведем на базе таблицы my_sql_table :
    1. Добавим в таблицу my_sql_table поле middle_name (отчество) после surname :

    $query = "ALTER TABLE `my_sql_table` ADD `middle_name`
    VARCHAR(50) NOT NULL AFTER `surname`";

    2. Теперь удалим поле surname из таблицы my_sql_table:

    $query = "ALTER TABLE `my_sql_table` DROP `surname`";

    3. Удаляем записи из таблицы my_sql_table с фамилией Сидоров:

    $query = "DELETE FROM `my_sql_table` where surname="Сидоров"";

    4. Помимо знаков равенства, также "больше" или "меньше", в языке MySQL запросов существует понятие "похоже на ". Выберем записи из таблицы my_sql_table, где в фамилии встречается "дор " :

    $query = "SELECT * FROM `my_sql_table` where surname like "%дор%"";

    Здесь наличие "% " в начале и конце "дор" и означает, что запрос будет искать именно "дор", причем не важно в начале, конце, или середине фамилии он находится. Рассмотрим следующий пример
    5. Выберем записи из таблицы my_sql_table с фамилией, которая начинается на П . Обратите внимание на расположение "% ":

    $query = "SELECT * FROM `my_sql_table` where surname like "П%"";

    6. Вычислим максимальное значение id :

    $query = "SELECT MAX(id) FROM `my_sql_table`";

    7. Вычислим количество полей в my_sql_table с фамилией, которая начинается на П .

    $query = "SELECT COUNT(*) FROM `my_sql_table` where surname like "П%"";

    8. Удаление таблицы my_sql_table:

    $query = "DROP TABLE `my_sql_table`";

    Для запросов 1-3 на языке PHP достаточно просто выполнить запрос:

    Mysql_query($query);

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




    Есть еще вопросы или что-то непонятно - добро пожаловать на наш

    MySQL - это один из типов реляционных баз данных. MySQL представляет собой сервер, к которому могут подключаться различные пользователи.

    Вы когда к интернету подключаетесь, вы же вводите логин и пароль, а также имя сервера к которому подключаетесь? При работе с MySQL используется такая же система.

    Ещё один момент: что такое реляционная база данных? Реляционная - значит основанная на таблицах. Знаменитый редактор электронных таблиц Excel от Microsoft фактически является редактором реляционных баз данных.

    Подключение к серверу MySQL

    Для подключения к серверу MySQL в PHP используется функция mysqli_connect() . Данная функция получает три аргумента: имя сервера, имя пользователя и пароль.

    Функция mysqli_connect() возвращает идентификатор подключения, его сохраняют в переменной и в дальнейшем используют для работы с базами данных.

    Код подключения к серверу MySQL:

    $link = mysqli_connect("localhost", "root", "");

    В данном случае я работаю на локальном компьютере на Denwere, поэтому имя хоста localhost, имя пользователя root, а пароля нет.

    Соединение также нужно закрыть, после завершения работы с MySQL. Для закрытия соединения используется функция mysqli_close() . Расширяем пример:

    $link = mysqli_connect("localhost", "root", ""); if (!$link) die("Error"); mysqli_close($link);

    Тут мы проверели идентификатор подключения на истинность, если с нашим подключением что-то не так, то и программа выполняться не будет, функция die() остановит её выполнение и выведет в браузер сообщение об ошибке.

    Ошибки подключения

    Для проверки подключения используются следующие функции:

    • mysqli_connect_errno() - возвращает код ошибки последней попытки соединения. При отсутствие ошибок возвращает ноль.
    • mysqli_connect_error() - возвращает описание последней ошибки подключения к серверу MySQL.
    define ("HOST", "localhost"); define ("DB_USER", "root"); define ("DB_PASSWORD", ""); define ("DB", "tester"); $link = mysqli_connect(HOST, DB_USER, DB_PASSWORD, DB); /* проверка соединения */ if (mysqli_connect_errno()) { printf("Не удалось подключиться: %s\n", mysqli_connect_error()); exit(); } else { printf("Удалось подключиться: %s\n", mysqli_get_host_info($link)); }

    Функция mysqli_get_host_info() возвращает строку, содержащую тип используемого соединения.

    Также обратите внимание, при помощи команды define я все параметры подключения сохранил в константах. Когда вы будете писать большие проекты, и подключатся к серверу MySQL будут много файлов, то удобно хранить параметры соединения в отдельном файле и вставлять его при помощи функции include или require .

    Выбор базы данных

    На сервере MySQL может быть несколько баз данных. Первым делом нам нужно выбрать для работы нужную нам базу. В PHP для этого в функции mysqli_connect() есть ещё один параметр - имя базы данных.

    Я создал у себя на компьютере через phpMyAdmin с именем tester. Подключаемся к ней:

    $link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Error"); mysql_close($link);

    Итак, мы выбрали для работы базу данных. Но как нам известно, реляционная база данных состоит из таблиц, а в нашей базе данных таблиц пока что нет. База данных создаётся пустая, без таблиц. Таблицы в неё нужно добавить отдельно. Вот давайте добавим в неё таблицу средствами PHP.

    Создаём таблицу

    В названии баз данных MySQL часть SQL обозначает Structured Query Language, что переводится как структурированный язык запросов. На языке SQL мы будем писать запросы и из программы PHP посылать их серверу MySQL.

    Чтобы создать таблицу нам просто нужно указать команду CREATE TABLE . Давайте создадим таблицу с именем users в столбцах которой будут храниться логины (столбец login) и пароли (столбец password) пользователей.

    $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))";

    В этом коде мы присвоили переменной $query строку текста, которая представляет собой запрос SQL. Мы создаём таблицу с именем users, которая содержит два столбца login и password, у обоих тип данных VARCHAR(20). О типах данных мы поговорим позже, сейчас только отмечу, что VARCHAR(20) - это строка максимальной длины 20 символов.

    Чтобы отправить наш запрос на сервер MySQL мы используем PHP функцию mysqli_query() . Эта функция возвращает положительное число, если операция прошла успешно и false, если произошла ошибка (синтаксис запроса ошибочный или у программы нет прав на выполнение запроса).

    $link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Error"); $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))"; mysqli_query($query); mysqli_close($link);

    Запрос SQL не обязательно записывать в переменную, его можно сразу записать как аргумент функции mysql_query() . Просто так код выллядит читабельней.

    У этого скрипта есть один недостаток - он ничего не выводит в браузер. Давайте добавим сообщение:

    $link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Error"); $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))"; if (mysqli_query($query)) echo "Таблица создана."; else echo "Таблица не создана."; mysqli_close($link);

    Если мы повторно запустим этот скрипт на выполнение, то увидим в браузере сообщение: "Таблица не создана". Дело в том, что таблица была создана при первом запуске, а повторно невозможно создать таблицу с таким же именем. Мы столкнулись с ситуацией возникновения ошибки, значит настало время поговорить об обработке ошибок при работе с MySQL.

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

    При отладке программы нам может понадобиться точная информация о ошибке. Когда в MySQL происходит ошибка, то сервер базы данных устанавливает номер ошибки и строку с её описанием. Для доступа к этим данным в PHP есть специальные функции.

    • mysqli_errno() - возвращает номер ошибки.
    • mysqli_error() - возвращает строку с описанием ошибки.

    Теперь давайте добавим функцию mysql_error() в наш скрипт:

    $link = mysql_connect("localhost", "root", "", "tester"); if (!$link) die("Error"); $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))"; if (mysqli_query($query)) echo "Таблица создана."; else echo "Таблица не создана: ".mysqli_error(); mysqli_close($link);

    Теперь наш скрипт вернёт в браузер строку: "Таблица не создана: Table "users" already exists".

    Удаление таблицы

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

    Для удаления таблицы используется команда DROP TABLE , за которой следует имя таблицы.

    $link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Error"); $query = "DROP TABLE users"; if (!mysqli_query($query)) echo "Ошибка при удалении таблицы: ".mysqli_error(); else echo "Таблица удалена."; mysqli_close($link);

    Итоги

    Итак, мы освоили основы MySQL. Что мы научились делать:

    • Подключаться к базе данных MySQL при помощи функции mysqli_connect() .
    • Закрывать соединение с сервером MySQL при помощи функции mysqli_close() .
    • Отправлять SQL запросы серверу MySQL при помощи функции mysqli_query() .
    • Мы узнали SQL запрос создания таблицы: create table.
    • Мы узнали SQL запрос удаления таблицы: drop table.
    • Мы узнали как обрабатывать ошибки при помощи функций mysqli_errno() и mysqli_error() .

    Потом мы подробно рассмотрим типы данных MySQL.

    Читаем следующий урок:

    3 метода подключения к MySQL с PHP с примерами кода


    Чтобы начать пользоваться базой данных MySQL, надо в первую очередь понять, как подключиться из вашей пользовательской PHP-программы (скрипта) к этой самой базе данных MySQL.

    В этой статье описаны следующие три метода, а также соответствующие примеры PHP-кода, в которых объясняется, как подключиться к вашей базе данных из PHP.

    Для всех приведенных ниже примеров мы будем подключаться к уже существующей базе данных MySQL. Примечание: все, что объясняется здесь, также будет работать с MariaDB, так же как и с MySQL.

    1. Подключение к PHP с помощью расширения mysqli
    *mysqli означает MySQL Improved

    Создайте следующий файл mysqli.php

    connect_error) { die("Ошибка: невозможно подключиться: " . $conn->connect_error); } echo "Подключились к базе.
    "; $result = $conn->query("SELECT id FROM goroda"); echo "Количество строк: $result->num_rows"; $result->close(); $conn->close(); ?> В приведенном выше коде:

    • mysqli - эта функция инициирует новое соединение с использованием расширения mysqli. Функция принимает четыре аргумента:
      1. localhost имя хоста, на котором запущена база данных MySQL
      2. name - имя пользователя MySQL для подключения
      3. pass - пароль для пользователя mysql
      4. db - база данных MySQL для подключения.
    • qvery - функция запроса MySQL. В этом примере мы выбираем столбец id из базы данных городов.
    • Наконец, мы показываем количество строк, выбранных с использованием переменной num_rows в результате. Мы также закрываем как результат, так и переменную соединения, как показано выше.
    Когда вы вызываете вышеуказанный mysqli.php из своего браузера, вы увидите следующий вывод, который указывает, что PHP смог подключиться к базе данных MySQL и получить данные.

    Подключились к базе. Количество строк: 6 2. Подключение из PHP MySQL PDO Extension
    *PDO означает объекты данных PHP

    Драйвер PDO_MYSQL реализует интерфейс PDO, предоставляемый PHP, для подключения из вашего PHP-скрипта к базе данных MySQL.

    Создайте следующий файл mysql-pdo.php:

    setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Подключились к базе.
    "; $sql = "SELECT id FROM goroda"; print "Список id:
    "; foreach ($conn->query($sql) as $row) { print $row["id"] . "
    "; } $conn = null; } catch(PDOException $err) { echo "Ошибка: невозможно подключиться: " . $err->getMessage(); } ?> В приведенном выше:

    • new PDO - создаст новый объект PDO, который примет следующие три аргумента:
      1. mysql connect string: он будет в формате «mysql:host=localhost;dbname=db». В приведенном выше примере db работает на localhost, и мы подключаемся к базе данных db.
      2. Имя пользователя MySQL для подключения
      3. Пароль для пользователя mysql
    • переменная $sql - создать запрос sql, который вы хотите выполнить. В этом примере мы выбираем столбец id из таблицы городов.
    • query ($sql). Здесь мы выполняем запрос sql, который мы только что создали.
    • foreach. Здесь мы перебираем результат из указанной выше команды запроса и сохраняем ее в переменной $row, а затем выводим ее с помощью echo.
    • В MySQL PDO, чтобы закрыть соединение, просто установите переменную $conn в значение null.
    Когда вы вызываете вышеуказанный скрипт mysqli.php из своего браузера, вы увидите следующие строки; они означают, что PHP смог подключиться к базе данных MySQL и получить информацию:

    Подключились к базе. Список id: 1 2 3 4 5 6 3. Подключение из PHP c использование устаревших функций mysql

    Используйте этот метод, только если вы используете более старую версию PHP и по какой-то причине не можете обновить ее до новой версии. Рекомендуется использовать метод №2 и метод №3, показанные выше, вместо этого метода. Я включил этот метод только для справки, а не как рекомендацию для использования.

    Это конкретное расширение было устарело от версии PHP 5.5. Но, начиная с версии PHP 7.0, это даже не будет работать, поскольку оно было удалено. Начиная с версии PHP 5.5, когда вы используете эти функции, она будет генерировать ошибку E_DEPRECATED.

    Создайте файл mysql.php:

    "; $result = mysql_query("SELECT id FROM goroda"); $row = mysql_fetch_row($result); echo "id 1: ", $row, "
    \n"; mysql_close($conn); ?> В приведенном выше:

    • Функция mysql_connect принимает три аргумента:
      1. имя хоста, в котором запущена база данных MySQL;
      2. имя пользователя MySQL для подключения;
      3. пароль для пользователя mysql. Здесь он подключается к базе данных MySQL, которая выполняется на локальном сервере с использованием имени пользователя и его пароля.
    • Функция mysql_select_db. Как следует из названия, она выбирает базу данных, к которой вы хотите подключиться. Эквивалентно команде «use». В этом примере мы подключаемся к базе данных db.
    • Функция mysql_query - используется для указания вашего запроса MySQL. В этом примере мы выбираем столбец id из базы данных городов.
    • mysql_fetch_row. Используйте эту функцию для извлечения строк из SQL-запроса, который мы только что создали.
    • Наконец, закройте соединение, используя команду mysql_close, как показано выше.
    Когда вы вызываете вышеуказанный mysql-legacy.php из своего браузера, вы увидите следующий вывод, который указывает, что PHP смог подключиться к базе данных MySQL и получить информацию:

    Подключились к базе. id 1: 1 Вот таким образом можно подключаться к MySQL. Повторюсь, лучше использовать два первых способа; о

    Мы научились подключаться серверу MySQL, выбирать базу данных для работы, узнали PHP-функцию отправки запросов серверу MySQL, узнали два простейших запроса (создание и удаление таблицы), ну и узнали как закрывать соединение.

    Теперь мы будем более глубоко изучать запросы MySQL. Итак, приступим!

    Создание таблицы - CREATE TABLE

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

    Вот код скрипта, который создаст нужную нам табличку:

    $link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Error"); $query = "CREATE TABLE users(login VARCHAR(20), password VARCHAR(20))"; if (mysqli_query($link, $query)) echo "Таблица создана."; else echo "Таблица не создана: ".mysqli_error(); mysqli_close($link);

    В нашей таблице только два поля: логин и пароль. Пока что нам больше не нужно, не будем усложнять процесс.

    Итак, таблица создана.

    Добавление строк (записей) в таблицу - INSERT

    Добавить новую строку в таблицу можно при помощи SQL команды insert. Вот пример:

    $link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Error"); $query = "INSERT INTO users (login, password) VALUE ("zeus", "pass123")"; if (mysqli_query($link, $query)) echo "Пользователь добавлен."; else echo "Пользователь не добавлен: " . mysqli_error(); mysqli_close($link);

    SQL запрос состоит из команды INSERT INTO , имени базы данных users, затем в скобках идут имена полей, потом слово VALUE , после которого в скобках следуют добавляемые значения. Значения берутся в кавычки.

    Синтаксис запроса выглядит так:

    INSERT INTO имя_таблицы (столбец1, столбец2) VALUE ("х1", "х2")

    Кавычки во вторых скобках обязательны.

    На месте значений могут быть переменные. Вот пример:

    $link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Error"); $login = "zeus"; $password = "pass123"; $query = "INSERT INTO users (login, password) VALUE ("$login", "$password")"; if (mysqli_query($link, $query)) echo "Пользователь добавлен."; else echo "Пользователь не добавлен: " . mysqli_error(); mysqli_close($link);

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

    Существует быстрый способ вставки нескольких строк одним запросом INSERT:

    INSERT INTO users (login, password) VALUE ("bob", "eee333"), ("Rooki", "12345"), ("magy", "olol88e8")

    Как видим, перечисляемые данные просто отделены запятыми.

    Итак, при помощи команды INSERT мы научились добавлять записи в таблицу. Идём дальше.

    Просмотр таблицы: команда SELECT

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

    Для получения данных из таблицы используется SQL-команда SELECT . Знак * обозначает что мы запрашиваем все данные, затем после слова FROM пишем имя таблицы, из которой хотим получить данные.

    Запросим все данные из таблицы users:

    $link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Error"); $query = "SELECT * FROM users"; $result = mysqli_query($link, $query); if (!$result) echo "Произошла ошибка: " . mysqli_error(); else echo "Данные получены"; mysqli_close($link);

    Функция mysqli_query() вернула нам идентификатор результата запроса - мы его помещаем в переменную и в дальнейшем будем работать с ним при помощи других функций PHP.

    Число записей в запросе

    Давайте определим сколько строк в нашем запросе? Я вот запустил скрипт добавления записи в таблицу сам не помню сколько раз и теперь не знаю сколько строк в моей таблице.

    Для определения числа строк в результате запроса используют функцию mysqli_num_rows() . Этой функции передаётся идентификатор результата запроса, а вернёт она число записей.

    $link = mysqli_connect("localhost", "root", "", "tester"); if (!$link) die("Error"); $query = "SELECT * FROM users"; $result = mysqli_query($link, $query); if (!$result) echo "Произошла ошибка: " . mysqli_error(); else echo "Данные получены"; $count = mysqli_num_rows($result); echo "Всего строк в таблице: $count."; mysqli_close($link);

    Если нам нужно узнать число записей в таблице, то приведённый способ не самый подходящий. Тут мы узнали число записей, найденных в запросе, но число записей в таблице ищется по другому.

    Число записей в таблице SELECT COUNT(*)

    Чтобы узнать число записей в таблице можно воспользоваться командой SELECT COUNT(*) FROM имя_таблицы.

    $link = mysqli_connect("localhost", "root", ""); if (!$link) die("Error"); mysqli_select_db("tester"); $query = "SELECT * FROM users"; $result = mysqli_query($link, $query); if (!$result) echo "Произошла ошибка: " . mysqli_error(); else echo "Данные получены. "; $count = mysqli_fetch_row($result); echo "Всего строк в таблице: $count."; mysqli_close($link);

    Обратите внимание, тут мы использовали новую функцию PHP mysqli_fetch_row() для получения данных. Эта функция возвращает ряд результата запроса в форме простого массива, в нашем случае в ряду одно поле и оно имеет индес 0.

    Просмотр результата запроса в цикле

    После выполнения SQL-запроса с командой SELECT и получения идентификатора результата запроса, PHP создаёт в наборе записей результата внутренний указатель. Этот указатель автоматически перемещается на следующую запись, после обращения к текущей записи. Благодаря этому механизму набор результа запроса SELECT очень удобно просматривать в цикле.

    В PHP есть несколько функций, при помощи которых можно дла каждой строки результирующего запроса получить массив, состоящий из её полей. Для примера возьмём функцию mysqli_fetch_row() . Этой функции передают идентификатор запроса, а возвращает она массив. Так в цикле просматривается весь результат запроса, по достижению конца результата запроса функция вернёт false .

    Итак, запрашиваем все данные из таблицы users (SELECT * FROM users).


    "; while ($row = mysqli_fetch_row($result)) { echo "Логин: $row. Пароль: $row.
    "; } mysqli_close($link);

    Функция mysqli_fetch_row() возвращает простой массив. В каждой итерации цикла мы получим массив с строкой из таблицы, доступ к полям которой мы можем получить указав числовой индекс.

    То же самое можно сделать используя функцию mysql_fetch_assoc() , она возвращает ассоциативный массив.

    $link = mysqli_connect("localhost", "root", ""); if (!$link) die("Error"); mysqli_select_db("tester"); $result = mysqli_query($link, "SELECT * FROM users"); if (!$result) echo "Произошла ошибка: " . mysqli_error(); else echo "Данные получены.
    "; while ($row = mysqli_fetch_assoc($result)) { echo "Логин: $row. Пароль: $row.
    "; } mysqli_close($link);

    Также есть функции mysqli_fetch_array() - возвращает любой тип массива, и mysqli_fetch_object() - возвращает объект.

    Запрос SELECT DISTINCT - уникальные значения полей

    Давайте создадим новую таблицу:

    $link = mysqli_connect("localhost", "root", ""); if (!$link) die("Error"); mysqli_select_db("tester"); // удаляем существующую таблицу mysqli_query($link, "DROP TABLE users"); // создаём новую таблицу $query = "CREATE TABLE users(name VARCHAR(20), surname VARCHAR(20), age TINYINT UNSIGNED)"; if (mysqli_query($link, $query)) echo "Таблица создана.
    "; else echo "Таблица не создана: " . mysqli_error(); // функция для добавления записей в таблицу function add_new_line($link, $query) { if (!mysqli_query($link, $query)) echo "Пользователь не добавлен: " . mysqli_error(); } // добавляем записи add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ("Max", "Jayson", "33")"); add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ("Bob", "Freeman", "26")"); add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ("Sara", "Lopes", "65")"); add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ("Serg", "Pupin", "29")"); add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ("Serg", "Borman", "43")"); add_new_line($link, "INSERT INTO users (name, surname, age) VALUE ("Max", "Lopes", "21")"); // выводим содержание таблицы в браузер $result = mysqli_query($link, "SELECT * FROM users"); if (!$result) echo "Произошла ошибка: " . mysqli_error(); else echo "Данные получены.
    "; while ($row = mysqli_fetch_assoc($result)) { echo "Имя: $row. Фамилия: $row. Возраст: $row.
    "; } mysqli_close($link);

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

    $link = mysqli_connect("localhost", "root", ""); if (!$link) die("Error"); mysqli_select_db("tester"); $result = mysqli_query($link, "SELECT DISTINCT name FROM users"); echo "Всего имён: " . mysqli_num_rows($result)."
    "; echo "Список имён:
    "; while ($name = mysqli_fetch_row($result)) { echo "$name
    "; } mysqli_close($link);

    SQL-запрос " SELECT DISTINCT name FROM users " вернул результат со всеми уникальными именами в нашей таблице. Каждое уникальное имя в новой строке результата запроса.

    Сортировка результата - ORDER BY

    Добавив в SQL-запрос команду ORDER BY мы сортируем результат запроса по возрастанию (цифры и буквы по алфавиту). Вот пример, в котором можно сравнить обычный запрос и отсортированный по возрасту (поле age).



    "; } echo "Сортируем по возрасту:
    "; $result = mysqli_query($link, "SELECT * FROM users ORDER BY age"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
    "; } mysqli_close($link);

    Можете заменить поле age в команде ORDER BY на поле name и посмотреть результат.

    Чтобы сортировать результат запроса в обратном порядке используйте команду ORDER BY age DESC .

    Соответствие условию - WHERE

    Добавив в SQL-запрос команду WHERE мы запросим только те записи, которые соответствуют условию. Например, сделаем запрос на людей младше 30 лет.

    Для этого используем SQL-запрос " SELECT * FROM users WHERE age

    $link = mysqli_connect("localhost", "root", ""); if (!$link) die("Error"); mysqli_select_db("tester"); echo "Люди младше 30:
    "; $result = mysqli_query($link, "SELECT * FROM users WHERE age<30"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
    "; } mysqli_close($link);

    Также мы можем сразу отсортировать результат по возрастанию age:
    " SELECT * FROM users WHERE age<30 ORDER BY age ".

    Если мы сделаем запрос " SELECT name FROM users WHERE age<30 ORDER BY age ", то в результате нам вернут только значения поля "name", но они также будут отсортированы по age.

    Мы можем запросить значения двух полей: " SELECT name, age FROM users WHERE age

    Теперь запросим все пользователей, с именем "Max".

    $link = mysqli_connect("localhost", "root", ""); if (!$link) die("Error"); mysqli_select_db("tester"); echo "Все Максы:
    "; $result = mysqli_query($link, "SELECT * FROM users WHERE name="Max""); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
    "; } mysqli_close($link);

    И ещё пример запроса, - выберет только имена (name) из таблицы users, все кроме Max.

    SELECT name FROM users WHERE name!="Max"

    На этом с запросом WHERE всё.

    Ограничение записей - LIMIT

    Добавив в SQL-запрос команду LIMIT мы ограничим размер результата.

    Запрос, который выводит первые три записи: " SELECT * FROM users LIMIT 3 ". Давайте посмотрим как он работает:

    $link = mysqli_connect("localhost", "root", ""); if (!$link) die("Error"); mysqli_select_db("tester"); echo "Содержание таблицы:
    "; $result = mysqli_query($link, "SELECT * FROM users"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
    "; } echo "

    Первые три записи:
    "; $result = mysqli_query($link, "SELECT * FROM users LIMIT 3"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
    "; } echo "

    Вторые три записи:
    "; $result = mysqli_query($link, "SELECT * FROM users LIMIT 3, 3"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
    "; } mysqli_close($link);

    Также тут мы использовали запрос: " SELECT * FROM users LIMIT 3, 3 ". Вторая тройка указывает смещение в результате запроса.

    Соответствие шаблону - LIKE

    Язык SQL поддерживает простые шаблоны. Для этого используется команда LIKE и шаблон задаётся с использованием символа % .

    Вот пример запроса, который вернёт все записи с именами, начинающимися на букву S.

    SELECT * FROM users WHERE name LIKE "S%"

    Тестирую запрос:

    $link = mysqli_connect("localhost", "root", ""); if (!$link) die("Error"); mysqli_select_db("tester"); echo "Содержание таблицы:
    "; $result = mysqli_query($link, "SELECT * FROM users"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
    "; } echo "

    Имена на букву S:
    "; $result = mysqli_query($link, "SELECT * FROM users WHERE name LIKE "S%""); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
    "; } mysqli_close($link);

    Вот пример запроса, который вернёт все записи с фамилиями, заканчивающимися на букву s.

    SELECT * FROM users WHERE name LIKE "%s"

    Соответствие условию - IN

    Этот запрос с использованием команды IN вернёт только те строки, которые строго соответствую условию.

    Например, нас интересуют люди с возрастом 21, 26 и 33 года.

    SELECT * FROM users WHERE age IN (21,26,33)

    Тестирую запрос:

    $link = mysqli_connect("localhost", "root", ""); if (!$link) die("Error"); mysqli_select_db("tester"); echo "Содержание таблицы:
    "; $result = mysqli_query($link, "SELECT * FROM users"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
    "; } echo "

    Люди, с требуемыми возрастами (21, 26, 33):
    "; $result = mysqli_query($link, "SELECT * FROM users WHERE age IN (21, 26, 33)"); while ($line = mysqli_fetch_row($result)) { echo "Имя: $line. Фамилия: $line. Возраст: $line.
    "; } mysqli_close($link);

    Максимальное и минимальное значение в столбце

    Выбирает максимальное значение age в таблице users.

    SELECT max(age) FROM users

    Следующий запрос выбирает данные из таблицы users по полям name и age где age принимает минимальное значение.

    SELECT name, min(age) FROM users

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

    Давайте Max Lopes установим возраст 15 лет. Это делается запросом MySQL:

    UPDATE users SET age="15" WHERE name="Max" AND surname="Lopes"

    Обратите внимание на новую команду AND (and - по английски значит "и") в запросе. Если мы не уточним фамилию, то возраст 15 лет будет установлен всем Максам в таблице.

    Одним запросом можно обновить два и более полей в одной строке. Делается это следующим образом:

    UPDATE users SET age = "18", surname = "Coocker" WHERE id = "3"

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

    Удалить запись - DELETE

    Запрос к базе данных MySQL для удаления записи:

    DELETE FROM users WHERE id = "10"

    Опять же, в нашей таблице нет поля id. Но мы можем удалить из неё всех людей, младше 18 лет.

    DELETE FROM users WHERE age < "18"

    Удалить таблицу - DROP TABLE

    Запрос к базе данных MySQL который удаляет целиком таблицу users:

    DROP TABLE users

    Удалить столбец - ALTER TABLE ... DROP ...

    Иногда может потребоваться удалить столбец из таблицы, давайте например удалим из users столбец age:

    ALTER TABLE users DROP age

    Этот запрос MySQL удалил столбец окончательно и безвозвратно.

    Добавить столбец - ALTER TABLE ... ADD ...

    Иногда может потребоваться добавить столбец в существующую таблицу, давайте например снова добавим в таблицу users столбец age:

    ALTER TABLE users ADD age TINYINT UNSIGNED

    Переименование столбца - ALTER TABLE ... CHANGE ...

    Иногда может потребоваться переименовать столбец, например столбец age переименовать в vozrast. Делаем это так:

    ALTER TABLE users CHANGE age vozrast TINYINT UNSIGNED

    Этот запрос MySQL переименовал столбец age в vozrast с типом данных TINYINT UNSIGNED .

    Переименование таблицы - RENAME TABLE ... TO ...

    Иногда может потребоваться переименовать таблицу:

    RENAME TABLE users TO peoples

    Удаление базы данных - DROP DATABASE

    Этот запрос может удалить базу данных с имененм tester:

    DROP DATABASE tester

    Создание базы данных - CREATE DATABASE

    Этот запрос создаёт базу данных с имененм tester:

    CREATE DATABASE tester

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

    Итоги

    Итак, в этой части мы ознакомились с запросами к MySQL. Многие из рассмотренных нами запросов нам не часто пригодятся в процессе работы, но знать их нужно, так как они точно пригодятся в процессе разработки скриптов.

    Некоторые запросы обычно делают только из phpMyAdmin (создание и удаление баз данных например).

    В работе сайтов обычно нужно добавить запись в таблицу, редактировать запись или удалить запись из таблицы.

    Следующим шагом будет изучение типов данных в MySQL.

    Похожие статьи