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

Уроки по PHP, Javascript и т.п.

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

Сообщение Александр » 05 авг 2010, 18:05

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. ?>

За это сообщение автора Александр поблагодарили - 6:
Archie, butuz, Cadmy, lewka151, Skaler, Ugly
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение Noise Gate » 06 авг 2010, 07:59

Для удобства использования приложением можно выводить в 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>';

За это сообщение автора Noise Gate поблагодарили - 3:
FireStorm3000, hahaha, Sasha
Noise Gate

 
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34
Откуда: СПб
Благодарил (а): 31 раз.
Поблагодарили: 64 раз.

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

Сообщение lewka151 » 06 авг 2010, 19:55

спасибо, очень полезный урок
 Атака шариков
Аватара пользователя
lewka151

 
Сообщения: 54
Зарегистрирован: 16 фев 2010, 21:01
Откуда: http://vkontakte.ru/id20138940
Благодарил (а): 6 раз.
Поблагодарили: 8 раз.

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

Сообщение FireStorm3000 » 02 сен 2010, 18:20

а как сохранить этот XML на сервере?
ну чтоб 10 раз не создавать, а считывать. А создавать можно через планировщик, ну чтоб сервер не грузить
У каждого свой демон (Гороскопы друзей)
http://vkontakte.ru/app1666633
Аватара пользователя
FireStorm3000

 
Сообщения: 80
Зарегистрирован: 03 янв 2010, 18:17
Благодарил (а): 5 раз.
Поблагодарили: 2 раз.

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

Сообщение Noise Gate » 02 сен 2010, 20:37

сохраняешь все это в переменную, затем открываешь файл, записываешь его, закрываешь
ну и через cron запускаешь с нужной периодичностью
Noise Gate

 
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34
Откуда: СПб
Благодарил (а): 31 раз.
Поблагодарили: 64 раз.

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

Сообщение Cepe}|{a » 26 окт 2010, 17:31

как сделать чтобы значения выводились в порядке убывания?
Аватара пользователя
Cepe}|{a

 
Сообщения: 93
Зарегистрирован: 21 авг 2010, 01:23
Благодарил (а): 8 раз.
Поблагодарили: 6 раз.

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

Сообщение Александр » 26 окт 2010, 19:34

Cepe}|{a

За это сообщение автора Александр поблагодарил:
Cepe}|{a
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

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

Сообщение Cepe}|{a » 27 окт 2010, 12:55

Александр
Спасибо, а можно как-нибудь вывести определённое количество пользователей? 10 например?
Аватара пользователя
Cepe}|{a

 
Сообщения: 93
Зарегистрирован: 21 авг 2010, 01:23
Благодарил (а): 8 раз.
Поблагодарили: 6 раз.

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

Сообщение butuz » 27 окт 2010, 15:04

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


или
LIMIT $start, $kolichestvo

За это сообщение автора butuz поблагодарили - 2:
Casperovskii, Cepe}|{a
butuz

 
Сообщения: 58
Зарегистрирован: 29 июл 2010, 10:43
Благодарил (а): 7 раз.
Поблагодарили: 10 раз.

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

Сообщение Cepe}|{a » 27 окт 2010, 17:22

butuz
Спасибо ;)
Аватара пользователя
Cepe}|{a

 
Сообщения: 93
Зарегистрирован: 21 авг 2010, 01:23
Благодарил (а): 8 раз.
Поблагодарили: 6 раз.

След.

Вернуться в Уроки на другие темы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0