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

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

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

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

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

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

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

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

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

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

<?php// данные доступа к базе данных$db_host="localhost";   // обычно не нужно изменять$db_user="user";    // имя пользователя БД$db_password="pass";    // пароль БД$db_name = "name";  // имя БД $mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);  if (mysqli_connect_errno()) {     printf("Ошибка соединения: %s\n", mysqli_connect_error());    exit; }$mysqli->set_charset("utf8"); // Выполняем запрос: выбрать пользователей, которые посетили приложение более 10 разif ($stmt = $mysqli->query('SELECT * FROM `stat` WHERE `visits`>10 LIMIT 5')) {    // выводим данные    while($row = $stmt->fetch_assoc()){         echo $row['uid'].' '.$row['visits'].'<br />';     }} // если нужно выбрать с учетом значения переменной$uid = 1; if ($stmt = $mysqli->prepare("SELECT name, score FROM stat WHERE uid = ?")) {    $stmt->bind_param('i', $uid);     $stmt->execute();     $stmt->bind_result($name, $score);      while ($stmt->fetch()) {        echo $name.' '.$score.'<br />';    }}?>
Заменяем данные доступа к базе данных.

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

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

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

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

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

<?php// данные доступа к базе данных$db_host="localhost";   // обычно не нужно изменять$db_user="user";    // имя пользователя БД$db_password="pass";    // пароль БД$db_name = "name";  // имя БД // соединение с БДmysql_connect($db_host, $db_user, $db_password) or die (mysql_error());mysql_select_db($db_name) or die (mysql_error());mysql_query("SET NAMES 'utf8'"); // Выполняем запрос: выбрать пользователей, которые посетили приложение более 10 раз$query = 'SELECT * FROM `stat` WHERE `visits`>10 LIMIT 5;';$sql = mysql_query($query); // обрабатываем полученный результат// если нужно, то узнаем количество выбранных значений$num_rows = mysql_num_rows($sql);echo $num_rows.'<br />'; // выводим данныеwhile ($sql_data = mysql_fetch_array($sql)) {    echo $sql_data['uid'].' - '.$sql_data['visits'].'<br />';} // иногда нужно вывести данные через цикл forfor ($i=0; $i<$num_rows; $i++) {    $sql_data = mysql_fetch_array($sql);    echo $sql_data['uid'].' - '.$sql_data['visits'].'<br />';} ?>
Noise Gate
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34

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

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

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

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

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

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

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

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 »

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

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

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

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

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