БлогNot. PHP: подключаемся к базе данных

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, развернуть в новую папку (10 Кб)


теги: php учебное mysql

25.01.2019, 15:43; рейтинг: 285