Работа с MySQL в PHP
PHP поддерживает работу с базой данных MySQL. Специальные встроенные функции для работы с MySQL позволяют просто и эффективно работать с этой СУБД: выполнять любые запросы, читать и записывать данные, обрабатывать ошибки.
Сценарий, который подключается к БД, выполняет запрос и показывает результат, будет состоять всего из нескольких строк. Для работы с MySQL не надо ничего дополнительно устанавливать и настраивать; всё необходимое уже доступно вместе со стандартной поставкой PHP.
Что такое mysqli?
mysqli (MySQL Improved) — это расширение PHP, которое добавляет в язык полную поддержку баз данных MySQL. Это расширение поддерживает множество возможностей современных версий MySQL.
Как выглядит работа с базой данных
Типичный процесс работы с СУБД в PHP-сценарии состоит из нескольких шагов:
- Установить подключение к серверу СУБД, передав необходимые параметры: адрес, логин, пароль.
- Убедиться, что подключение прошло успешно: сервер СУБД доступен, логин и пароль верные и так далее.
- Сформировать правильный SQL запрос (например, на чтение данных из таблицы).
- Убедиться, что запрос был выполнен успешно.
- Получить результат от СУБД в виде массива из записей.
- Использовать полученные записи в своём сценарии (например, показать их в виде таблицы).
Функция mysqli connect: соединение с MySQL
Перед началом работы с данными внутри MySQL, нужно открыть соединение с сервером СУБД. В PHP это делается с помощью стандартной функции mysqli_connect() . Функция возвращает результат — ресурс соединения. Данный ресурс используется для всех следующих операций с MySQL.
Но чтобы выполнить соединение с сервером, необходимо знать как минимум три параметра:
- Адрес сервера СУБД;
- Логин;
- Пароль.
Если вы следовали стандартной процедуре установки MySQL или используете OpenServer, то адресом сервера будет localhost , логином — root . При использовании OpenServer пароль для подключения — это пустая строка ‘’ , а при самостоятельной установке MySQL пароль вы задавали в одном из шагов мастера установки.
Базовый синтаксис функции mysqli_connect() :
mysqli_connect(, , , );
Проверка соединения
Первое, что нужно сделать после соединения с СУБД — это выполнить проверку, что оно было успешным. Эта проверка нужна, чтобы исключить ошибку при подключении к БД. Неверные параметры подключения, неправильная настройка или высокая нагрузка заставит MySQL отвергать новые подключения. Все эти ситуации приведут к невозможности соединения, поэтому программист должен проверить успешность подключения к серверу, прежде чем выполнять следующие действия.
Соединение с MySQL устанавливается один раз в сценарии, а затем используется при всех запросах к БД.
Результатом выполнения функции mysqli_connect() будет значение специального типа — ресурс. Если подключение к MySQL не удалось, то функция mysqli_connect() вместо ресурса вернёт логическое значение типа «ложь» — false . Хорошей практикой будет всегда проверять результат выполнения этой функции и сравнивать его с ложью.
Соединение с MySQL и проверка на ошибки:
else < print("Соединение установлено успешно"); >?>
Функция mysqli_connect_error() просто возвращает текстовое описание последней ошибки MySQL.
Установка кодировки
Первым делом после установки соединения крайне желательно явно задать кодировку, которая будет использоваться при обмене данными с MySQL. Если этого не сделать, то вместо записей со значениями, написанными кириллицей, можно получить последовательность из знаков вопроса: . . Вызовите эту функцию сразу после успешной установки соединения: mysqli_set_charset($con, «utf8»);
Выполнение запросов
Установив соединение и определив кодировку мы готовы выполнить свои первые SQL-запросы. Вы уже умеете составлять корректные SQL команды и выполнять их через консольный или визуальный интерфейс MySQL-клиента. Те же самые запросы можно отправлять без изменений и из PHP-сценария. Помогут в этом несколько встроенных функций языка.
Два вида запросов
Следует разделять все SQL-запросы на две группы:
- Чтение информации (SELECT).
- Модификация (UPDATE, INSERT, DELETE).
При выполнении запросов из среды PHP, запросы из второй группы возвращают только результат их исполнения: успех или ошибку.
Запросы первой группы при успешном выполнении возвращают специальный ресурс результата. Его, в свою очередь, можно преобразовать в ассоциативный массив (если нужна одна запись) или в двумерный массив (если требуется список записей).
Добавление записи
Вернёмся к нашему проекту — дневнику наблюдений за погодой. Начнём практическую работу с заполнения таблиц данными. Для начала добавим хотя бы один город в таблицу cities .
Выражение INSERT INTO используется для добавления новых записей в таблицу базы данных.
Составим корректный SQL-запрос на вставку записи с именем города, а затем выполним его путём передачи этого запроса в функцию mysqli_query() , чтобы добавить новые данные в таблицу.
Обратите внимание, что первым параметром для функции mysqli_query() передаётся ресурс подключения, полученный от функции mysqli_connect() , вторым параметром следует строка с SQL-запросом.
При запросах на изменение данных (не SELECT) результатом выполнения будет логическое значение — true или false , которое будет означать, что запрос выполнить не удалось. Для получения строки с описанием ошибки существует функция mysqli_error($link) .
Функция insert id: как получить идентификатор добавленной записи
Следующим шагом будет добавление погодной записи для нового города. Погодные записи хранит таблица weather_log, но, чтобы сослаться на город, необходимо знать идентификатор записи из таблицы cities.
Здесь пригодится функция mysqli_insert_id() . Она принимает единственный аргумент — ресурс соединения, а возвращает идентификатор последней добавленной записи.
Теперь у нас есть всё необходимое, чтобы добавить погодную запись. Вот как будет выглядеть комплексный пример с подключением к MySQL и добавлением двух новых записей:
else < $sql = 'INSERT INTO cities SET name = "Санкт-Петербург"'; $result = mysqli_query($link, $sql); if ($result == false) < print("Произошла ошибка при выполнении запроса"); >else < $city_id = mysqli_insert_id($link); $sql = 'INSERT INTO weather_log SET city_id = ' . $city_id . ', day = "2017-09-03", temperature = 10, cloud = 1'; $result = mysqli_query($link, $sql); if ($result == false) < print("Произошла ошибка при выполнении запроса"); >> >
Чтение записей
Другая частая операция при работе с базами данных в PHP — это получение записей из таблиц (запросы типа SELECT). Составим SQL-запрос, который будет использовать SELECT выражение. Затем выполним этот запрос с помощью функции mysqli_query() , чтобы получить данные из таблицы.
В этом примере показано, как вывести все существующие города из таблицы cities :
В примере выше результат выполнения функции mysqli_query() сохранён в переменной $result . В этой переменной находятся не данные из таблицы, а специальный тип данных — так называемая ссылка на результаты запроса.
Чтобы получить действительные данные, то есть записи из таблицы, следует использовать другую функцию — mysqli_fetch_array() — и передать ей единственным параметром эту самую ссылку. Теперь каждый вызов функции mysqli_fetch_array() будет возвращать следующую запись из всего результирующего набора записей в виде ассоциативного массива.
Цикл while здесь используется для «прохода» по всем записям из полученного набора записей. Значение поля каждой записи можно узнать просто обратившись по ключу этого ассоциативного массива.
Как получить сразу все записи в виде двумерного массива
Иногда бывает удобно после запроса на чтение не вызывать в цикле mysqli_fetch_array для извлечения очередной записи по порядку, а получить их сразу все одним вызовом. PHP так тоже умеет.
Функция mysqli_fetch_all($res, MYSQLI_ASSOC) вернёт двумерный массив со всеми записями из результата последнего запроса. Перепишем пример с показом существующих городов с её использованием:
Как узнать количество записей
Часто бывает необходимо узнать, сколько всего записей вернёт выполненный SQL-запрос. Это может помочь при организации постраничной навигации или просто в качестве информации. Узнать число записей поможет функция mysqli_num_rows() , которой следует передать ссылку на результат запроса.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Создание регистрации на сайте на PHP + MySQL
Здравствуйте! Сейчас мы попробуем реализовать самую простую регистрацию на сайте с помощью PHP + MySQL. Для этого на вашем компьютере должен быть установлен Apache. Принцип работы нашего скрипта изображен ниже.
1. Начнем с создания таблички users в базе. Она будет содержать данные пользователя (логин и пароль). Зайдем в phpmyadmin (если вы создаете базу на своем ПК http://localhost/phpmyadmin/). Создаем таблицу users, в ней будет 3 поля.
Я создаю ее в базе mysql, вы можете создавать в другой базе. Далее устанавливаем значения, как на рисунке:
Нажимаем «сохранить». Итак, таблица у нас есть.
2. Необходимо соединение с этой таблицей. Давайте создадим файл bd.php. Его содержание:
$db = mysql_connect ("ваш MySQL сервер","логин к этому серверу","пароль к этому серверу");
mysql_select_db ("имя базы, к которой подключаемся",$db);
?>
В моем случае это выглядит так:
$db = mysql_connect ("localhost","user","1234");
mysql_select_db ("mysql",$db);
?>
Сохраняем bd.php.
Отлично! У нас есть таблица в базе, соединение к ней. Теперь можно приступать к созданию странички, на которой пользователи будут оставлять свои данные.
3. Создаем файл reg.php с содержанием (все комментарии внутри):
Регистрация
Регистрация
4. Создаем файл, который будет заносить данные в базу и сохранять пользователя. save_user.php(комментарии внутри):
if (isset($_POST['login'])) < $login = $_POST['login']; if ($login == '') < unset($login);>> //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) < $password=$_POST['password']; if ($password =='') < unset($password);>>
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
>
//если логин и пароль введены, то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
// подключаемся к базе
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
// проверка на существование пользователя с таким же логином
$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");
>
// если такого нет, то сохраняем данные
$result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')");
// Проверяем, есть ли ошибки
if ($result2=='TRUE')
echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. Главная страница";
>
else echo "Ошибка! Вы не зарегистрированы.";
>
?>
5. Теперь наши пользователи могут регистрироваться! Далее необходимо сделать «дверь» для входа на сайт уже зарегистрированным пользователям. index.php (комментарии внутри) :
// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички.
session_start();
?>
Главная страница
Главная страница
// Проверяем, пусты ли переменные логина и id пользователя
if (empty($_SESSION['login']) or empty($_SESSION['id']))
// Если пусты, то мы не выводим ссылку
echo "Вы вошли на сайт, как гость
Эта ссылка доступна только зарегистрированным пользователям";
>
else
// Если не пусты, то мы выводим ссылку
echo "Вы вошли на сайт, как ".$_SESSION['login']."
Эта ссылка доступна только зарегистрированным пользователям";
>
?>
В файле index.php мы выведем ссылочку, которая будет открыта только для зарегистрированных пользователей. В этом и заключается вся суть скрипта — ограничить доступ к каким-либо данным.
6. Остался файл с проверкой введенного логина и пароля. testreg.php (комментарии внутри):
session_start();// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички.
if (isset($_POST['login'])) < $login = $_POST['login']; if ($login == '') < unset($login);>> //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) < $password=$_POST['password']; if ($password =='') < unset($password);>>
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
>
//если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
// подключаемся к базе
include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь
$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); //извлекаем из базы все данные о пользователе с введенным логином
$myrow = mysql_fetch_array($result);
if (empty($myrow['password']))
//если пользователя с введенным логином не существует
exit ("Извините, введённый вами login или пароль неверный.");
>
else //если существует, то сверяем пароли
if ($myrow['password']==$password) //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел!
$_SESSION['login']=$myrow['login'];
$_SESSION['id']=$myrow['id'];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь
echo "Вы успешно вошли на сайт! Главная страница";
>
else //если пароли не сошлись
exit ("Извините, введённый вами login или пароль неверный.");
>
>
?>
Ну вот и все! Может урок и скучный, но очень полезный. Здесь показана только идея регистрации, далее Вы можете усовершенствовать ее: добавить защиту, оформление, поля с данными, загрузку аватаров, выход из аккаунта (для этого просто уничтожить переменные из сессии функцией unset) и так далее. Удачи!
Все проверил, работает исправно!
Автор: Стороженко Евгений (отредактировал и опубликовал Максим Шкурупий)
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.ruseller.com
Автор: Максим Шкурупий
Урок создан: 24 Июля 2009
Просмотров: 10514385
Правила перепечатки
5 последних уроков рубрики «PHP»
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Разработка сайта на PHP в Москве
Очень сильно был удивлен профессионализмом Ахмеда. Очень хороший программист, быстро разобрался в сайте, все исправил. Цена качество на высоком уровне. Надеюсь, продолжим сотрудничество. Лично могу подтвердить высокий профессионализм Ахмеда. Мой емейл — sudiirossii@yandex.ru
Цены выполненных работ
Разработать php скрипт под форум ipb | 2200 руб. |
35 лет, опыт 11 лет
Все сделано быстро и качественно Артем справился за 3часа и выполнил все мои изменения и поправки Всем советую. Буду обращаться еще!
Цены выполненных работ
Разработка на PHP | 5000 руб. |
31 год, опыт 4 года
Сделано нормально
Цены выполненных работ
Php программист разработать форму ввода данных | 6000 руб. |
35 лет, опыт 3 года
Отлично выполнена сложнейшая работа по восстановлению большого сайта с огромной базой. Так что я сам даже решил доплатить сверх оговоренной суммы.
Цены выполненных работ
Необходимо создать динамическое поле адреса (php) | 1950 руб. |
24 года, опыт 8 лет
Работа выполнена очень тщательно, в оговоренный срок, очень профессионально. Рекомендую Александра как грамотного исполнителя подобных задач.
Цены выполненных работ
Интересует создание php или js скрипта | 3122 руб. |
39 лет, опыт 16 лет
Всё сделал быстро и лучше, чем ожидали! Быстрое, гибкое мышление обеспечивает лёгкость и скорость взаимодействия. Рекомендую!
Цены выполненных работ
Помощь в создании crm (php, html, js) | 15000 руб. |
38 лет, опыт 9 лет
Отличный исполнитель, сделал сайт без лишних вопросов, профи своего дела, буду работать и дальше с ним.
Цены выполненных работ
Разработка или доработка существующей шахматки на PHP c OOP | 7000 руб. |
38 лет, опыт 7 лет
Быстро и качественно 🙂
Цены выполненных работ
Создать CRM/БД и программную систему по хранению данных по заказам юридических услуг с последующим наращиванием функционала. PHP, БД | 40000 руб. |
33 года, опыт 8 лет
Александр К.
Все хорошо только по срокам немного ошиблись.
30 лет, опыт 5 лет
Спасибо, Кириллу за ответственную работу по сайту, всё сделано точно как мне и требовалось. Всем рекомендую Кирилла и его команду как профессионалов своего дела, не пожалеете.
29 лет, опыт 7 лет
Доволен работой, буду рекомендовать.
Фото работ мастеров YouDo
Ещё примеры работ
Создание сайта на PHP стоит доверить частному специалисту или компании, которая зарегистрирована на Юду. Исполнители Юду качественно и быстро справятся с поставленной перед ними задачей. Разработать сайт для компаний, занимающихся производством различной продукции, или интернет-магазинов с нуля для них не составит труда, мастера Юду имеют большой опыт работы.
Стоимость создания сайтов на PHP у исполнителей Юду на 20-25% ниже, чем в специализированных фирмах вашего города. Обусловлено это тем, что мастера, зарегистрированные на YouDo, не пользуются посредническими услугами и не арендуют офисные помещения.
Работы, выполняемые мастерами Юду
На YouDo можно найти организацию или частного специалиста, занимающегося созданием веб-ресурсов. Они выполнят ваш заказ в кратчайшие сроки. К преимуществам сотрудничества с исполнителями Юду можно отнести возможность получить профессиональную консультацию по интересующим вопросам, доступную цену качественных услуг.
У веб-мастеров с опытом, зарегистрированных на Юду, можно заказать:
- создание сайта на PHP с нуля
- подключение домена, регистрацию персональной информации вашей компании
- наполнение ресурса актуальным и качественным текстовым и графическим материалом, редактирование контактов на главной странице
- ведение корпоративных ресурсов
- изменение структуры каталога
Специалисты создадут новый контент в сжатые сроки. Регулярное общение с разработчиком позволит своевременно вносить коррективы.
Последовательность разработки интернет-ресурсов
Создание сайта на PHP мастерами YouDo производится в несколько этапов:
- определение прототипа и структуры
- разработка дизайн-проекта главной и других страниц
- программинг и верстка
- внесение персональных данных
- регистрация нового домена, подбор хостинговой площадки
- техническая поддержка и информационное сопровождение веб-ресурса
Опытные разработчики, найти которых можно на Юду, быстро создадут простой динамический, одностраничный или корпоративный сайт со сложным дизайном с помощью удобного конструктора. Специалисты YouDo правильно настроят и запустят ваш ресурс.
Сколько стоит сделать шаблон?
Расценки на работы, выполняемые веб-мастерами, которые зарегистрированы на Юду, можно увидеть в прайс-листах, размещенных на сайте в профилях исполнителей. Точная стоимость создания сайта любого вида будет известна после согласования деталей сотрудничества с мастером YouDo.
Стоимость выполнения вашего заказа зависит от:
- квалификации специалиста и его рейтинга на Юду
- объема задач (создание одностраничного ресурса, сайта-визитки, портфолио)
- срока выполнения задания
- сложности дизайн-проекта
Мастера YouDo могут написать уникальные качественные тексты или отредактировать уже имеющуюся информацию, сделать каталог, научить вас пользоваться конструктором на PHP. Использование простого шаблонного сайта может не отвечать всем вашим требованиям, поэтому лучше заказать полноценный динамический ресурс. Сложный и креативный дизайн, разработанный опытными специалистами Юду, позволит привлечь внимание потенциальных клиентов вашей фирмы.
Цена подбора хостинговой площадки, полноценной поддержки ресурса, создания контента, предлагаемая специалистами YouDo, невысока. Создание сайта на PHP лучше доверить мастерам Юду.
Разработка сайта на PHP — отзывы об исполнителях
Юрий Д.
Рейтинг мастера: 5
Выполнил 34 задания
Было задание создать php фаил по конкретным критериям. Задание было выполнено, но не так как требовалось. Может Я не правильно выразился, а может и меня не правильно поняли. Все равно спасибо исполнителю за оперативность выполнения задания. Обязательно обращусь к нему еще!
Создание сайта на PHP
Представляем вам курс по созданию полноценного динамического веб сайта на основе языка PHP. При построении сайта нами будут задействованы технологии: HTML, CSS, JavaScript, jQuery, Ajax, PHP и MySQL.
Видеоурок
Информация про курс
В видеокурсе мы будем создавать веб сайт с нуля. Мы построим всю разметку, добавим необходимые стили, а также весь функционал, что будет прописан на основе языка PHP.
Мы рассмотрим основные моменты при создании динамических веб сайтов на основе серверного языка PHP. Перед созданием сайта потребуется изучить: HTML, CSS, JavaScript, jQuery, PHP и MySQL.
Если вы не знаете какую-либо из этих технологий, то изначально стоит ознакомиться с ней. На нашем сайте вы можете найти соответсвующие курсы по этим технологиям:
- Курс по HTML5 ;
- Курс по CSS3 ;
- Курс по JavaScript ;
- Курс по jQuery ;
- Курс по PHP ;
- Курс по MySQL .
Создание сайта на PHP
Предлагаем также вашему вниманию рассмотреть большой урок по созданию полноценного веб сайта на PHP всего за один час.