Вывод данных из базы (php, mysqli, mysql)

Уроки по PHP, Javascript и т.п.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург

Вывод данных из базы (php, mysqli, mysql)

Сообщение Александр »

PHP + MySQLi вывод данных из базы

В этом уроке вы узнаете, как с помощью PHP вывести данные из базы.

Чтобы не создавать новую базу, я покажу пример на основе базы, созданной в уроке «Создание базы пользователей приложения и ведение статистики». У вас должна быть создана такая база и она должна содержать в себе записи.

Будьте внимательны. mysqli и mysql - это не одно и то же. Использовать mysql не рекомендуется, т.к. поддержка этого расширения будет убрана из PHP в будущем.

1. Создаём php файл

Код: Выделить всё

  1. <?php
  2. // данные доступа к базе данных
  3. $db_host="localhost";   // обычно не нужно изменять
  4. $db_user="user";    // имя пользователя БД
  5. $db_password="pass";    // пароль БД
  6. $db_name = "name"// имя БД
  7.  
  8. $mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);
  9.  
  10. if (mysqli_connect_errno()) {
  11.     printf("Ошибка соединения: %s\n", mysqli_connect_error());
  12.     exit;
  13. }
  14. $mysqli->set_charset("utf8");
  15.  
  16. // Выполняем запрос: выбрать пользователей, которые посетили приложение более 10 раз
  17. if ($stmt = $mysqli->query('SELECT * FROM `stat` WHERE `visits`>10 LIMIT 5')) {
  18.     // выводим данные
  19.     while($row = $stmt->fetch_assoc()){
  20.         echo $row['uid'].' '.$row['visits'].'<br />';
  21.     }
  22. }
  23.  
  24. // если нужно выбрать с учетом значения переменной
  25. $uid = 1;
  26.  
  27. if ($stmt = $mysqli->prepare("SELECT name, score FROM stat WHERE uid = ?")) {
  28.     $stmt->bind_param('i', $uid);
  29.     $stmt->execute();
  30.  
  31.     $stmt->bind_result($name, $score);
  32.  
  33.     while ($stmt->fetch()) {
  34.         echo $name.' '.$score.'<br />';
  35.     }
  36. }?>

Заменяем данные доступа к базе данных.

ВАЖНО! При выводе данных из базы, необходимо уделять особое внимание данным, которые вы получали от пользователя, иначе ваш код может быть уязвим. Подробнее читайте в теме Безопасность скриптов, защита от инъекций, XSS (php, sql).

2. Всё готово!
Загружаем файл на сервер и запускаем в браузере. Если в вашей базе есть пользователи, которые посетили приложение более 10 раз, то вы увидите их ID и количество посещений.


 Старый способ. Использовать не рекомендуется.
С этим способом можно ознакомится в качестве примера, но для работы над проектами лучше сразу использовать новый способ с mysqli.

ВНИМАНИЕ! Поддержка функции mysql_query будет удалена из PHP в будущем.
Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API и соответствующий FAQ для получения более подробной информации. Альтернативы для данной функции:
mysqli_query()
PDO::query()

Код: Выделить всё

  1. <?php
  2. // данные доступа к базе данных
  3. $db_host="localhost";   // обычно не нужно изменять
  4. $db_user="user";    // имя пользователя БД
  5. $db_password="pass";    // пароль БД
  6. $db_name = "name"// имя БД
  7.  
  8. // соединение с БД
  9. mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());
  10. mysql_select_db($db_name) or die (mysql_error());
  11. mysql_query("SET NAMES 'utf8'");
  12.  
  13. // Выполняем запрос: выбрать пользователей, которые посетили приложение более 10 раз
  14. $query = 'SELECT * FROM `stat` WHERE `visits`>10 LIMIT 5;';
  15. $sql = mysql_query($query);
  16.  
  17. // обрабатываем полученный результат
  18. // если нужно, то узнаем количество выбранных значений
  19. $num_rows = mysql_num_rows($sql);
  20. echo $num_rows.'<br />';
  21.  
  22. // выводим данные
  23. while ($sql_data = mysql_fetch_array($sql)) {
  24.     echo $sql_data['uid'].' - '.$sql_data['visits'].'<br />';
  25. }
  26.  
  27. // иногда нужно вывести данные через цикл for
  28. for ($i=0; $i<$num_rows; $i++) {
  29.     $sql_data = mysql_fetch_array($sql);
  30.     echo $sql_data['uid'].' - '.$sql_data['visits'].'<br />';
  31. }
  32.  
  33. ?>
Noise Gate
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34
Откуда: СПб

Re: Вывод данных из базы (PHP + MySQL)

Сообщение Noise Gate »

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

Код: Выделить всё

  1. // обрабатываем полученный результат
  2. echo '<?xml version="1.0" encoding="UTF-8"?><response>';
  3. while ($sql_data = @mysql_fetch_array($sql)) {
  4.     echo '<item><uid>', $sql_data['uid'], '</uid><visits>', $sql_data['visits'], '</visits></item>';
  5. }
  6. echo '</response>';
Аватара пользователя
lewka151
Сообщения: 54
Зарегистрирован: 16 фев 2010, 21:01
Откуда: http://vkontakte.ru/id20138940

Re: Вывод данных из базы (PHP + MySQL)

Сообщение lewka151 »

спасибо, очень полезный урок
Аватара пользователя
FireStorm3000
Сообщения: 80
Зарегистрирован: 03 янв 2010, 18:17

Re: Вывод данных из базы (PHP + MySQL)

Сообщение FireStorm3000 »

а как сохранить этот XML на сервере?
ну чтоб 10 раз не создавать, а считывать. А создавать можно через планировщик, ну чтоб сервер не грузить
Noise Gate
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34
Откуда: СПб

Re: Вывод данных из базы (PHP + MySQL)

Сообщение Noise Gate »

сохраняешь все это в переменную, затем открываешь файл, записываешь его, закрываешь
ну и через cron запускаешь с нужной периодичностью
Аватара пользователя
Cepe}|{a
Сообщения: 93
Зарегистрирован: 21 авг 2010, 01:23

Re: Вывод данных из базы (PHP + MySQL)

Сообщение Cepe}|{a »

как сделать чтобы значения выводились в порядке убывания?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург

Re: Вывод данных из базы (PHP + MySQL)

Сообщение Александр »

Cepe}|{a

Код: Выделить всё

  1. SELECT * FROM `база` ORDER BY `поле` DESC
Аватара пользователя
Cepe}|{a
Сообщения: 93
Зарегистрирован: 21 авг 2010, 01:23

Re: Вывод данных из базы (PHP + MySQL)

Сообщение Cepe}|{a »

Александр
Спасибо, а можно как-нибудь вывести определённое количество пользователей? 10 например?
butuz
Сообщения: 58
Зарегистрирован: 29 июл 2010, 10:43

Re: Вывод данных из базы (PHP + MySQL)

Сообщение butuz »

Код: Выделить всё

  1. SELECT * FROM `база` ORDER BY `поле` DESC LIMIT 10


или
LIMIT $start, $kolichestvo
Аватара пользователя
Cepe}|{a
Сообщения: 93
Зарегистрирован: 21 авг 2010, 01:23

Re: Вывод данных из базы (PHP + MySQL)

Сообщение Cepe}|{a »

butuz
Спасибо ;)
Ответить