Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11642
Последний выпуск: 19.06.2015

Используем базу данных MySQL

Автор: Бардин Павел,
Источник: www.proger.ru

MySql - Система Управления Базами Данных (СУБД). Основное отличие от всех остальных СУБД это то, что она является бесплатной. В силу того, что mysql бесплатна, она поддерживается очень многими хостинг провайдерами.

Здесь я расскажу как связать php и mysql т.е. как получить данные из базы данных mysql в php скрипт.

Ну вообще-то это не так сложно. Всё, что нужно знать:

  • Хост - адрес сервера баз данных mysql
  • Имя базы данных
  • Имя пользователя
  • Пароль - пароль для доступа к БД
  • Некоторые sql команды

Далее я буду предполагать, что у вас уже заведена база данных на сервере хостера или на домашнем компьютере (mysql можно скачать с сайта http://mysql.com).

Итак, алгоритм такой:

  1. Устанавливаем соединение с сервером
  2. Выбираем нужную базу данных
  3. Делаем запрос к серверу баз данных (sql запрос)
  4. Обрабатываем результат запроса, если это необходимо
  5. Закрываем соединение (отключаемся от сервера БД)

По части php, чтобы работать с БД надо знать несколько функций (полный список смотри в php мануале).

Код:
mysql_connect();
mysql_select_db();
mysql_query();
mysql_fetch_array();
mysql_close();

Это тот минимум, который позволит вам устанавливать соединение с сервером mysql, выбирать базы данных и делать запросы к серверу баз данных.

Для справки!

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

Я не буду рассматривать синтаксис каждой функции. Надеюсь у вас есть php manual (его можно скачать с сайта http://php.net). Рассмотрим эти функции в деле т.е. на примере.

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

имя поля тип(длина) описание
id целый(2) уникальный номер
name символьный(100) имя
tel символьный(20) телефон

Таблица имеет имя: customer, а наша база данных называется database.

Допустим, что ваши данные для подключения к серверу mysql Такие:

  • Хост: localhost
  • Имя пользователя: guest
  • Пароль: mypassword

Для начала необходимо создать нашу таблицу customer. Напишем скрипт который создаст в базе данных database таблицу customer. Назовём файлик как install.php.

Файл install.php

Код:
<?php

// Данные для mysql сервера
$dbhost = "localhost"; // Хост
$dbuser = "guest"; // Имя пользователя
$dbpassword = "mypassword"; // Пароль
$dbname = "database"; // Имя базы данных

// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);

// Выбираем нашу базу данных
mysql_select_db($dbname, $link);

// Создаём таблицу customer
// т.е. делаем sql запрос
$query = "create table customer (id int(2) primary key
auto_increment, name varchar(100), tel varchar(20))"
;
mysql_query($query, $link);

// Закрываем соединение
mysql_close($link)

?>

Функция mysql_connect() возвращает идентификатор соединения. Этот идентификатор необходимо указывать во всех mysql функциях. Можно провести аналогию с указателем на файл (file pointer), который используется функциями по работе с файлами. В параметрах функции мы указали хост, имя пользователя и пароль к базе данных.

На сервере mysql храниться не только ваша база данных. Сервер может обслуживать тысячи таких баз данных.

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

Выбор базы данных осуществляется функцией mysql_select_db(). В параметрах указывается: имя требуемой базы данных $dbname и идентификатор соединения $link, который мы получили с помощью функции mysql_connect().

После того как мы подключились к серверу mysql и выбрали нашу базу данных, мы делаем sql запрос.

Литературу по языку sql вы найдёте на сайте mysql.ru. В запросе указываем, что мы хотим создать таблицу с именем customer и со структурой приведённой в таблице выше. Запрос к серверу mysql осуществляется с помощью функции mysql_query(). В параметрах указывается сам запрос $query и идентификатор соединения $link.

И, наконец, отключаемся от сервера (закрываем соединение) функцией mysql_close().

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

Для справки!

На самом деле скрипт может устанавливать несколько соединений с сервером mysql.

Всё зависит от хостинга на котором вы сидите.

Если вы всё сделали правильно, то на сервере mysql в вашей базе данных, появится таблица customer.

После того как мы создали таблицу, её надо заполнить т.е. записать в нёё какие-нибудь данные (записи).

Напишем скрипт, который будет добавлять запись в нашу таблицу. Назовём файл скрипта как insert.php.

Файл insert.php

Код:
<?php

// Данные для mysql сервера
$dbhost = "localhost"; // Хост
$dbuser = "guest"; // Имя пользователя
$dbpassword = "mypassword"; // Пароль
$dbname = "database"; // Имя базы данных

// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);

// Выбираем нашу базу данных
mysql_select_db($dbname, $link);

// Добавляем запись в нашу таблицу customer
// т.е. делаем sql запрос
$query = "insert into customer values(0,'Иванов Иван Иванович',
'(095) 555-55-55')"
;

mysql_query($query, $link);

// Закрываем соединение
mysql_close($link);

?>

Посмотрев этот скрипт вы заметете, что он отличается от предыдущего только строкой запроса $query.

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

Для этого напишем скрипт и назовём файлик select.php.

Файл select.php

Код:
<?php

// Данные для mysql сервера
$dbhost = "localhost"; // Хост
$dbuser = "guest"; // Имя пользователя
$dbpassword = "mypassword"; // Пароль
$dbname = "database"; // Имя базы данных

// Подключаемся к mysql серверу
$link = mysql_connect($dbhost, $dbuser, $dbpassword);

// Выбираем нашу базу данных
mysql_select_db($dbname, $link);

// Добавляем запись в нашу таблицу customer
// т.е. делаем sql запрос
$query = "select * from customer";

// Запрашиваем
$result = mysql_query($query, $link);

while($rows = mysql_fetch_array($result, mysql_assoc))
{
printf("id:%d, name:%s, tel:%s", $rows['id'],$rows['name'],$rows['tel']);
}

// Закрываем соединение
mysql_close($link);

?>

Ну тут... всё понятно :) :) :) Естественно изменилась строка запроса $query, которая теперь содержит sql-оператор select. Так же добавился небольшой код while() { .... }.

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

Константа mysql_assoc указывает на то, что функция должна вернуть ассоциативный массив полей.

После того как функция mysql_fetch_array() обработает все строки результата, она вернёт значение false и тогда цикл while() - не выполниться.

Тут в цикле используем функцию printf(). Она очень похожа на эту же функцию в языке c.

Справку по функции printf() можете посмотреть в php мануале.

Надеюсь моя статья хоть немного помогла вам понять связь php и mysql.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
98K
08 января
Dmitriy Dim
0 / / 08.01.2017
+1 / -0
Мне нравитсяМне не нравится
8 января 2017, 07:10:28
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'admin'@'localhost' (using password: YES) in Z:\home\stx.ru\www\install.php on line 10

Warning: mysql_select_db() expects parameter 2 to be resource, boolean given in Z:\home\stx.ru\www\install.php on line 13

Warning: mysql_query() expects parameter 2 to be resource, boolean given in Z:\home\stx.ru\www\install.php on line 19

Warning: mysql_close() expects parameter 1 to be resource, boolean given in Z:\home\stx.ru\www\install.php on line 22
2.
90K
16 апреля 2013 года
Boska Shaumarov
0 / / 16.04.2013
+2 / -1
Мне нравитсяМне не нравится
16 апреля 2013, 21:29:31
У меня вопрос а что тут значит %d, %s, %s ???
3.
80K
29 мая 2012 года
koctik
2 / / 29.05.2012
+0 / -1
Мне нравитсяМне не нравится
5 марта 2013, 17:04:49
Давно занимаюсь, несколько лет и не очень сталкивался с тем, что когда в базе данных имеются таблицы и заполненные они очень большим текстом например до 30 тысяч наименований, практикуюсь в основном на Денвере, и он такие данные не взял. Позже узнал что бывает не только экспорт, но и импорт тех же данных и поэтому вопрос решился сам и теперь я знаю больше.
4.
88K
25 декабря 2012 года
0 / / 25.12.2012
+2 / -3
Мне нравитсяМне не нравится
25 декабря 2012, 21:40:13
Не работает ничего
5.
70K
05 апреля 2011 года
bahaik
0 / / 05.04.2011
+0 / -4
Мне нравитсяМне не нравится
5 апреля 2011, 01:13:51
Огромное Вам спасибо!!! Удачи Вам.
6.
58K
29 марта 2010 года
vov
1 / / 29.03.2010
+3 / -0
Мне нравитсяМне не нравится
27 января 2011, 22:09:05
while($rows = mysql_fetch_array($result, mysql_assoc))
{
printf("id:%d, name:%s, tel:%s",
rows['id'],rows['name'],rows['tel']);
}
Кто не может понять почему скрипт не работает объясню.
Автор дал возможность раскинуть вам мозгами но смотрю все леняться.

while($rows = mysql_fetch_array($result))
{
printf("id:%d, name:%s, tel:%s",
$rows['id'],$rows['name'],$rows['tel']);
}
Найдите отличия и вудет вам счастье.
Удачи.
vvv-dizain.ru
7.
58K
29 марта 2010 года
vov
1 / / 29.03.2010
+5 / -1
Мне нравитсяМне не нравится
29 марта 2010, 19:16:22
Да и не только в Денвере проблема с [ ]. А понять просто не реально. Что делать ума не приложу.
8.
41K
24 июля 2008 года
KreNos
1 / / 24.07.2008
+2 / -1
Мне нравитсяМне не нравится
15 ноября 2008, 00:47:23
ну в принципе все понятно вот только у меня возникла маленькая проблема
я пользуюсь денвером
и если я пишу:
while($rows = mysql_fetch_array($result, mysql_assoc))
{
printf("id:%d, name:%s, tel:%s",
rows['id'],rows['name'],rows['tel']);
}
то он мне выдает ошибку синтаксиса ругаясь на квадратные скобки!
а если я пишу:
while($rows= mysql_fetch_array($result,MYSQL_ASSOC))
{
printf("id:%d, name:%s, tel:%s", $rows['id'], $rows['name'], $rows['tel']);
}
то он начинает ругаться с sql запросом mysql_fetch_array:
1) "Предупреждение: mysql_fetch_array () [function.mysql-fetch-array]: тип результата должен быть или MYSQL_NUM, MYSQL_ASSOC или MYSQL_BOTH."
2) "Предупреждение: mysql_fetch_array (): поставляемый аргумент не действительный ресурс результата MySQL"
и еще я заметил если пишешь mysql_fetch_array($result)
то остается только 2-е предупреждение..
подскажите че делать???
или напишите ссылку на форум по данному вопросу
9.
37K
23 февраля 2008 года
G-Unit-Soulja
0 / / 23.02.2008
+1 / -1
Мне нравитсяМне не нравится
23 февраля 2008, 12:34:20
я немного не понял. обьясните пожалуйста для чего пишется "primary key auto_increment" в запросе? что вообще это значит?
10.
35K
18 декабря 2007 года
Алхимик
0 / / 18.12.2007
+2 / -2
Мне нравитсяМне не нравится
12 января 2008, 02:49:37
Вс статье есть немного ошибок:
while($rows= mysql_fetch_array($result,MYSQL_ASSOC))
{
printf("id:%d, name:%s, tel:%s", $rows['id'], $rows['name'], $rows['tel']);
}
Автору низкий поклон за статью...
11.
Аноним
+5 / -0
Мне нравитсяМне не нравится
27 мая 2006, 07:41:18
printf("id:%d,name:%s,tel:%s",rows['id'],..); или printf("id:%d,name:%s,tel:%s",$rows['id'],..); ?
12.
Аноним
+2 / -3
Мне нравитсяМне не нравится
26 мая 2006, 10:43:51
Руки завжди не доходили самому розібратись, а тут Ви вже все і пояснили :) Дуже дякую
13.
Аноним
+2 / -0
Мне нравитсяМне не нравится
26 мая 2006, 03:37:30
Огромное спасибо! )) Давно искал... более понятного обьяснения еще не встречал ))) Спасибо! )
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог