Страница 1 из 8

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

Добавлено: 05 авг 2010, 18:05
Александр
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 />';} ?>

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

Добавлено: 06 авг 2010, 07:59
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>';

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

Добавлено: 06 авг 2010, 19:55
lewka151
спасибо, очень полезный урок

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

Добавлено: 02 сен 2010, 18:20
FireStorm3000
а как сохранить этот XML на сервере?
ну чтоб 10 раз не создавать, а считывать. А создавать можно через планировщик, ну чтоб сервер не грузить

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

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

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

Добавлено: 26 окт 2010, 17:31
Cepe}|{a
как сделать чтобы значения выводились в порядке убывания?

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

Добавлено: 26 окт 2010, 19:34
Александр
Cepe}|{a

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

SELECT * FROM `база` ORDER BY `поле` DESC

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

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

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

Добавлено: 27 окт 2010, 15:04
butuz

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

SELECT * FROM `база` ORDER BY `поле` DESC LIMIT 10
или
LIMIT $start, $kolichestvo

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

Добавлено: 27 окт 2010, 17:22
Cepe}|{a
butuz
Спасибо ;)