Тема: «работа с базой данных mysql в PHP » 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема: «работа с базой данных mysql в PHP »



Тема: «Работа с базой данных MySQL в PHP»

План лекции

Введение

Создание базы данных с помощью phpMyAdmin

Соединение с базой данных

Запросы к базе данных

Кодировка

Отображение данных из БД MySQL на php-странице

Обработка команд SQL в PHP

Введение

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

В PHP работают с базами данных MySQL. И эта работа осуществляется с помощью программного обеспечения phpMyAdmin.

phpMyAdmin – это бесплатный программный инструмент, написанный на PHP, предназначенный для управления администрированием MySQL через Интернет. phpMyAdmin поддерживает широкий спектр операций на MySQL. Часто используемые операции (управление базами данных, таблицами, столбцами, отношениями, индексами, пользователями, разрешениями и т.д.) могут выполняться через пользовательский интерфейс, в то время как у вас все еще есть возможность напрямую выполнять любую инструкцию SQL. Т.е. используя phpMyAdmin, несколькими щелчками мыши можно создавать базу данных, предоставлять привилегии для пользователя MySQL для этой базы данных и выполнять любые другие операции над БД.

Соединение с базой данных

Любая программа на языке PHP, которая собирается работать с MуSQL базой данных, должна состоять из следующих обязательных базовых шагов:

1. Установить связь с MySQL сервером.

2. Выбрать базу данных для работы.

3. Посылать команды MySQL серверу и получать ответы.

4. Обработать результаты.

5. Закрыть связь с MySQL сервером.

 

Работа с БД из PHP осуществляется с помощью трех основных функций:

mysql_connect – соединение с сервером и базой данных;

mysql_query – универсальная функция отправки запросов к БД;

mysql_error – вывод ошибок.

 

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

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

Если вы работаете на своем компьютере, то это будут 'localhost', 'root' и пароль в виде пустой строки (на некоторых серверах он тоже может быть root или 111). Если ваша база данных в Интернете – то эти данные дает вам хостер.

 

Создайте index.php – файл для работы с БД test с помощью PHP. Далее будете работать с файлом index.php и весь код записываете в него.

Файл index. php сохраняете в каталоге home / localhost / www /Ваша_папка.

 

Установите соединение с базой данных test:

 

<?php

//устанавливаем доступы к базе данных:

 

//переменная $host - имя хоста, на локальном компьютере (в нашем случае, это localhost)

$host = 'localhost';

    

//переменная $user – имя пользователя, по умолчанию это root

$user = 'root';

 

//переменная $password – пароль, он по умолчанию пустой

$password = '';

 

//$db_name – имя базы данных

$db_name = 'test';

 

//создаем соединение, используя наши доступы:

mysql_connect($host, $user, $password);

//выбираем базу данных

mysql_select_db($db_name);

 

//устанавливаем кодировку (не обязательно)

mysql_query("SET NAMES ' cp1251'");

?>

 

Проверяем выполнение кода, в адресной строке браузера вводим localhost /Ваша_папка/ index. php или просто localhost /Ваша_папка. Если ошибок нет, продолжаем работу с базой данных, т.к. пока страница index.php пустая. Далее необходимо будет отобразить данные из таблицы students на странице index. php (Рассмотрим ниже в пункте 6).

Запросы к базе данных

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

 

//отбираем все записи из таблицы students

mysql_query("SELECT * FROM students");

 

Проще и понятнее, если текст запроса будет храниться в переменной $query:

 

//отбираем все записи из таблицы students

$query = "SELECT * FROM students";

//выполняем запрос

mysql_query($query);

 

Имя таблицы также лучше хранить в переменной:

 

//задаем имя таблицы в переменной $table

$table = 'students';

//отбираем все записи из таблицы students

$query = "SELECT * FROM ". $table;

//выполняем запрос

mysql_query($query);

 

Так как запрос отбирает данные из таблицы students, и с этими данными будет проводиться в дальнейшем работа (отображение на странице index.php), то результат запроса сохраняем в переменную $result:

 

<?php

//задаем имя таблицы в переменной $table

$table = 'students';

//отбираем все записи из таблицы students

$query = "SELECT * FROM ". $table;

//выполняем запрос

$result = mysql_query($query);

?>

Усложним запрос, отберем записи из таблицы students, у которых возраст больше или равен 18, т.е. age>=18.

 

<?php

//задаем имя таблицы в переменной $table

$table = 'students';

//отбираем все записи из таблицы students

$query = "SELECT * FROM ". $table. "WHERE age>=18";

//выполняем запрос

$result = mysql_query($query);

?>

 

После выполнения запроса результат отбора хранится в переменной $result, но, по-прежнему, не отображен на странице index.php.

 

Замечание. Принято правило, по которому команды SQL следует писать в верхнем регистре, а все остальное – в нижнем. Это относится к командам SELECT, UPDATE, FROM, DELETE, WHERE и другим такого рода. Конечно, синтаксической ошибки не будет, если вы напишите их маленькими буквами, но принято большими. Запросы принято брать в двойные кавычки.

Кодировка

Чтобы не возникало проблем с кодировками следует придерживаться простых правил:

1. Базу данных следует создавать в кодировке utf8_general_ci.

2. Документ PHP должен быть в кодировке utf8.

3. Таблицы в БД должны быть в utf8_general_ci.

4. После команды mysql_connect добавьте запрос, который установит кодировку для существующего соединения:

mysql_query ("SET NAMES  'utf8'  ")

или

mysql_query ("SET NAMES  'cp1251'  ")

 

Итоги:  

1) в цикле while считываем построчно результат из базы данных;

2) когда цикл дойдет до последней строки функция mysqli_fetch_assoc вернет false и цикл while закончит свою работу;

3) массив $row имеет поля такие же, как и база данных students, и обращение к ним осуществляется так: $ row [' id '], $ row [' fam '], $ row [' age '], $ row [' stip '].

 

Чтобы данные из базы были выведены в табличном виде, теги создания таблицы, строк и ячеек напечатаем с помощью команды echo. Изменим вышеприведенный код:

           

//Делаем запрос к БД, результат запроса храним в $result:

$result = mysql_query($query);

 

//Печатаем тег начала таблицы

echo '<table align="center" border="1">';

//Создаем шапку таблицы

//Начинаем первую строку

echo '<tr>';

//Создаем первую ячейку первого столбца

echo '<th>Номер</th>';

//Создаем первую ячейку второго столбца

echo '<th>Фамилия</th>';

//Создаем первую ячейку третьего столбца

echo '<th>Возраст</th>';

//Создаем первую ячейку четвертого столбца

echo '<th>Стипендия</th>';

//Завершаем первую строку

echo '</tr>';

// Делаем обход массива и вывод данных из таблицы students

while($row = mysql_fetch_assoc($result))

{

  //печатаем очередную строку таблицы с данными

echo '<tr align="center">';

echo '<td>'.$row['id'].'</td>';

echo '<td>'.$row['fam'].'</td>';

echo '<td>'.$row['age'].'</td>';

echo '<td>'.$row['stip'].'</td>';

echo '</tr>';

}

//закрываем тег создания таблицы

echo '</table>';

?>

 

Обновите страницу index.php и просмотрите результат – это должна быть таблица:

 

 

Обработка команд SQL в PHP

Команда SELECT

Команда SELECT позволяет отобрать несколько строк из таблицы. Ее синтаксис следующий:

 

SELECT * FROM имя_таблицы WHERE условие_отбора; Примеры использования команды SELECT рассмотрим ниже.

Выберем из нашей тестовой таблицы students студента с id равным 2:

<?php //В $result будет находиться одна строка с данными на Белова: $query = "SELECT * FROM students WHERE id=2"; $result = mysql_query($query);?>

Выберем из нашей таблицы students студентов с id больше 2:

<?php //В $result будут все студенты, кроме первого и второго: $query = "SELECT * FROM students WHERE id>2"; $result = mysql_query($query);?>

 

Выберем из нашей таблицы students студентов с id больше 2 включительно:

<?php //В $result будут все студенты, кроме первого: $query = "SELECT * FROM students WHERE id>=2"; $result = mysql_query($query);?>

 

Выберем из нашей таблицы students студентов с id, не равным 2:

<?php //В $result будут все студенты кроме Белова (потому что у него id равен 2): $query = "SELECT * FROM students WHERE id!= 2"; $result = mysql_query($query);?>

 

Выберем из нашей таблицы students студентов возрастом 16 лет:

<?php //В $result будут Антонов и Ветров: $query = "SELECT * FROM students WHERE age=16"; $result = mysql_query($query);?>

 

Выберем из нашей таблицы students студентов со стипендией 1400:

<?php //В $result будут Донцов, Калинин: $query = "SELECT * FROM students WHERE stip=1400"; $result = mysql_query($query);?>

 

Выберем из нашей таблицы students студента с фамилией Егоров:

<?php //В $result будет только Егоров: $query = "SELECT * FROM students WHERE fam='Егоров' "; $result = mysql_query($query); /*       Обратите внимание на кавычки:        поскольку вся строка запроса у нас лежит в двойных        кавычках, то строку 'Егоров' мы возьмем в одинарные! */?>

Группировки условий

Если вам нужны сложные комбинации команд OR и AND то, так же, как в if, их можно группировать с помощью круглых скобок (), чтобы показать приоритет условий.

Давайте выберем всех студентов в возрасте от 16 лет до 18 лет (включительно) или со стипендией не менее 1400 руб (обратите внимание на расстановку скобок () - именно они группируют условия):

 

SELECT * FROM students WHERE (age>=16 AND age<=18) OR (stip>=1400)

Выбор столбцов

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

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

 

<?php /*       В $result будут только поля fam и age и не будет id, stip       (звездочка *, которую мы ставили раньше, указывает вернуть ВСЕ столбцы): */ $query = "SELECT fam, age FROM students"; $result = mysql_query($query);?>

Кроме того, можно выполнить частичное совпадение строки с помощью % в ключевых словах. Ниже будут показаны все студенты, фамилия которых начинается с “Ант”.

SELECT * FROM students WHERE fam LIKE ' Ант% ';

 

Ниже будут показаны все студенты, фамилия которых заканчивается на “ов”.

SELECT * FROM students WHERE fam LIKE ' %ов ';

 

Вы также можете дать % в обоих направлениях. В этом случае, будет поиск для данного ключевого слова в любом месте строки. Ниже будут показаны все студенты, которые содержат “н” внутри их фамилии.

SELECT * FROM students WHERE fam LIKE '%н%';

Давайте выберем те записи, у которых возраст начинается с цифры 2, а затем идет еще один символ:

SELECT * FROM students WHERE age LIKE '2_'

Другой синтаксис INSERT

INSERT имеет альтернативный синтаксис:

<?php //ВСТАВИТЬ В имя_таблицы (поле1, поле2...) ЗНАЧЕНИЯ (значение1, значение2...) $query = "INSERT INTO students (поле1, поле2...) VALUES (значение1, значение2...)"; mysql_query($query);?>

 

Давайте добавим нового студента Кравцова, в возрасте 20 лет, со стипендией 2000 руб с помощью альтернативного синтаксиса:

<?php //ВСТАВИТЬ В students (name, age, stip) ЗНАЧЕНИЯ ('Кравцов', 20, 2000)" $query = "INSERT INTO students (name, age, stip) VALUES ('Кравцов', 20, 2000)"; mysql_query($query);?>

ORDER BY - сортировка

С помощью команды ORDER BY можно сортировать строки результата.

Выберем из нашей таблицы students всех студентов и отсортируем их по возрасту:

<?php //В $result строки будут отсортированы по возрасту от меньшего к большему: $query = "SELECT * FROM students ORDER BY age"; mysql_query($query);?>

Если мы хотим обратный порядок сортировки, то следует написать:

<?php //В $result строки будут отсортированы по возрасту от большего к меньшего: $query = "SELECT * FROM students ORDER BY age DESC";?>

LIMIT и ORDER вместе:

<?php //В $result будут строки со вторую, 5 штук, отсортированные по убыванию id $query = "SELECT * FROM students ORDER BY id DESC LIMIT 1,5";?>

Тема: «Работа с базой данных MySQL в PHP»

План лекции

Введение



Поделиться:


Последнее изменение этой страницы: 2021-05-27; просмотров: 184; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.34.146 (0.061 с.)