Изучаем PHP 7. №29. Работа с базой данных. SQLite

И первой базой, с которой мы поработаем, будет SQLite. Почему? Потому, что для нее не требуется сервер, все данные хранятся в одном файле, существует удобный плагин firefox для управления базой. Она как нельзя лучше подойдет для маленьких не нагруженных сайтов, визиток, блогов, лендингов.
Из минусов: отсутствие авторизации при подключении. То есть, если кто-то знает где лежит ваша база и она при этом открыта для полного доступа, то он может считать все данные с этой базы.
Но для лендингов и маленьких сайтов — это то, что нужно. Думаю, что вы оцените ее удобство и простоту.

Если вы счастливый пользователь огненного лиса, тогда смело ставьте дополнение sqlite manager.
sqlite manager

В дальнейшем с помощью этого дополнения вы сможете корректировать базу, если вам лень все писать в коде.
Чтобы создать базу данных, достаточно создать текстовый файл с расширением .sqlite или .db, хотя насколько я понял обработчику пофиг на расширение, хоть уберите его вообще.

Для начала напишем инсталятор базы и занесем несколько демо данных:
install.php

<meta charset="utf-8">
<?php 
//подключение к файлу базы данных
$db = new SQLite3('my.db');

//Саму базу данных уже создавать не нужно, так как my.db и есть база
//if ($db->exec("CREATE DATABASE myphp")) echo "База данных создана<br>";

//Создаем таблицу пользователей
if ($db->exec("CREATE TABLE 'user'
               ('id' INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE , 
               'name' VARCHAR(20), 
               'age' INT(3), 
               'city' VARCHAR(50))")) echo "Таблица пользователей создана<br>";

//вводим демо данные в таблицу
if($db->exec("INSERT INTO user VALUES (1,'Andrey',15,'Odessa')")) echo "Демо данные внесены<br>";
if($db->exec("INSERT INTO user VALUES (2,'Vitaliy',28,'Dnepr')")) echo "Демо данные внесены<br>";

echo "-------------------------------------------<br>";

//выводим демо данные
$results = $db->query('SELECT * FROM user');
while ($row = $results->fetchArray()) {
    echo "Результат<br>";
    echo "id:".$row['id']." Имя: ".$row['name']." Возраст: ".$row['age']." Город: ".$row['city'];
}

//Закрываем соединение с базой.
$db->close();

?>
<p><a href="/">На главную</a></p>

Так будет выглядеть результат:

Таблица пользователей создана
Демо данные внесены
Демо данные внесены
——————————————-
Результат
id: Имя: Andrey Возраст: 15 Город: OdessaРезультат
id: Имя: Vitaliy Возраст: 28 Город: Dnepr

index.php

<meta charset="utf-8">
<?php include_once('func.php'); ?>
<!DOCTYPE html>
<html>
<head>
  <title>Пользователи</title>
</head>
<body>

<?php
//Если был запрос на изменение данных 
if($_GET['update']){
  global $db;
  $id=$_GET['update'];
  $results = $db->query("SELECT * FROM user WHERE id=$id");
  $row = $results->fetchArray();
  $name = $row['name'];
  $age = $row['age'];
  $city = $row['city'];
  $db->close();
  echo '
  <h2>Изменить данные пользователя</h2>
  <form method="post">
    <input type="text" name="name" value="'.$name.'" placeholder="Имя">
    <input type="text" name="age" value="'.$age.'" placeholder="Возраст">
    <input type="text" name="city" value="'.$city.'" placeholder="Город">
    <input type="submit" name="edit" value="Изменить">
  </form>';
  //если данные с формы отправлены
  if($_POST['edit']){
    update($id,$_POST['name'],$_POST['age'],$_POST['city']);
    echo "Данные успешно изменены <a href='/'>На главную</a>";
  }
}else{
  //Добавление пользователей
  echo '
  <h2>Добавить пользователя</h2>
  <form method="post">
    <input type="text" name="name" placeholder="Имя">
    <input type="text" name="age" placeholder="Возраст">
    <input type="text" name="city" placeholder="Город">
    <input type="submit" name="add" value="Добавить">
  </form>
  ';
  //если данные с формы отправлены
  if($_POST['add']){
  add($_POST['name'],$_POST['age'],$_POST['city']);
  }
}

//Вывод списка пользователей
 echo users(); 

//удаление пользователей
if($_GET['del']){
  $id = $_GET['del'];
  del($id);
}
 ?>


</body>
</html>

func.php

<?php 
//подключение к базе данных
if(file_exists('my.db')){
  $db = new SQLite3('my.db');
}else{
  echo "Установите базу данных - <a href='install.php'>Установить</a>";
  exit();
}


//Добавить пользователя
function add($name,$age,$city){
  $db = new SQLite3('my.db');
  $db->query("INSERT INTO user VALUES (NULL,'$name',$age,'$city')");
  $db->close();
}

//Редактировать пользователя
function update($id,$name,$age,$city){
  $db = new SQLite3('my.db');
  $db->exec("UPDATE user SET name='$name', age='$age', city='$city' WHERE id='$id'");
  $db->close();
}

//Удалить пользователя
function del($id){
  $db = new SQLite3('my.db');
  $db->query("DELETE FROM user WHERE id=$id");
  $db->close();
}

//Показать всех пользователей

function users(){
  echo "<h2>Пользователи</h2>";
  $db = new SQLite3('my.db');
  $results = $db->query("SELECT * FROM user");
  while ($row = $results->fetchArray()) {
    $id = $row['id'];
    	echo "id: $id Имя: ".$row['name']." Возраст: ".$row['age']." Город: ".$row['city'];
    	echo " | <a href='/?update=$id'>Изменить</a> | <a href='/?del=$id'>Удалить</a><br>";
  }
  $db->close();
}

 ?>

А вот и результат:
Изучаем PHP 7. №29. Работа с базой данных. SQLite
—————————
Металлически двери в деревянный дом следует устанавливать с учётом ряда особенностей. В районах с очень низкой температурой зимой правильная установка металлической двери в деревянный дом позволит избежать полного или частичного замерзания дверей.

Введи свой e-mail:

One thought on “Изучаем PHP 7. №29. Работа с базой данных. SQLite

  1. Меня интересует работа в SQLite3 с JSON-полями, но в стандартной упаковке PHP работа SQLite3 с JSON не вкомпилирована, а я с VC совсем не дружу, чтобы скомпилить себе библиотеку с включенной поддержкой.
    Может есть готовая скомпилированная библиотека для PHP 7.0\7.1\7.2 ?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *