PHP: подключаемся к базе данных
Нам нужен был простой пример подключения к базе данных, но современнее, чем вот здесь, то есть, с разметкой HTML5, использованием MySQLi вместо MySQL и более-менее адекватными проверками корректности параметров подключения.
С другой стороны, в примере не требовался Юникод, всё выполнялось локально на Denwer с принятой в нём по умолчанию однобайтовой кодировкой русской Windows (cp1251
).
Вот код скрипта-примера, в реальной жизни не забывайте о том, что лучше написать отдельный модуль для работы с базой данных, как сделано по первой и второй ссылкам.
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="windows-1251"> <title>БД</title> </head> <body> <?php define ('DB_HOST','localhost'); //имя хоста define ('DB_LOGIN','root'); //логин define ('DB_PASSWORD',''); //пароль define ('DB_NAME','my'); //имя БД define ('TAB_NAME','messages'); //имя таблицы $mysql_id = mysqli_connect (DB_HOST, DB_LOGIN, DB_PASSWORD) or die (sprintf("Ошибка подключения: %s\n", mysqli_connect_error())); mysqli_set_charset ($mysql_id, "cp1251") or //а лучше utf8 die (sprintf("Ошибка установки кодировки: %s\n", mysqli_error($mysql_id))); mysqli_select_db ($mysql_id, DB_NAME) or die (sprintf("Ошибка выбора таблицы: %s\n", mysqli_error($mysql_id))); $sql = 'select * from '.TAB_NAME.' order by title'; $result = mysqli_query ($mysql_id, $sql) or die ('Ошибка SQL: '.mysqli_error($mysql_id)); $n = mysqli_num_rows ($result); if ($n>0) { $i=1; while ($row = mysqli_fetch_assoc ($result)) { echo '<br>'.($i++).'. <b>'.$row['title'].'</b>'.': '.$row['text']; } } else { echo 'Пустой результат (0 строк)'; } ?> </body></html>
Этот файл скрипта типа .php
тоже должен быть сохранён в кодировке русской Windows и Denwer не настроен на использование Юникода по умолчанию.
Перед тем, как запускать пример на локальном хосте мы создали посредством утилиты phpMyAdmin (см. в конце статьи) базу с именем my
и типом сопоставления кодировки cp_1251_general_ci
(русская Windows, игнорирование регистра символов при сравнении).
Потом выполнили к этой пустой базе следующий запрос SQL:
create table messages ( id int primary key auto_increment, title varchar(80), text text ); insert into messages (id,title,text) values (1,'Запись 1','Текст записи 1'), (2,'Запись 2','Текст записи 2')
Также для получения данных можно использовать функцию mysqli_fetch_array
вместо mysqli_fetch_assoc
, разница в том, что mysqli_fetch_assoc
вернёт значение из поля id
базы в виде $row['id']
, а mysqli_fetch_array
- в виде $row[0]
, так как id
- первое по порядку (с номером ноль) поле в структуре базы.
Приложу также более современный, чем по первой ссылке, пример простой гостевой книги на PHP + MySQLi. Есть регистрация, авторизация, поиск по сообщениям, удаление их администратором (пользователем с ником Admin), разбиение вывода на "порции" данных и т.п. базовые возможности. Скрипт написан быстро и в учебных целях, поэтому отнюдь не совершенен. Базу данных он создаёт себе сам, предполагается, что база и сами файлы скрипта размещены в кодировке UTF-8 Юникода.
Скачать простую гостевую на PHP + MySQLi в архиве .zip, развернуть в новую папку (9 Кб)
25.01.2019, 15:43 [1989 просмотров]