Одностраничный учебник SQL: Управление пользователями

Мы посмотрим, как создать SQL-таблицу для хранения списка зарегистрированных участников, и как написать все запросы, необходимые для управления файлом пользователей. Таким образом, основная часть команд SQL будет реализована на практике .

Запросы к базе данных записываются на PHP. Все версии PHP и MySQL поддерживают эти команды.

Резюме
  1. Создать базу данных пользователей.
  2. Таблица пользователей SQL.
  3. Очистить таблицу.
  4. Добавить столбец.
  5. Удалить столбец.
  6. Добавить пользователя.
  7. Изменение информации.
  8. Удалить пользователя.
  9. Поиск пользователя.
  10. Проверьте логин.
  11. Вернуть последнюю запись.
  12. Регистрационная форма.

Создать базу данных

В файле конфигурации, например, sete.php, размещаются данные доступа к базе:

$HOST = "localhost";
$USER = "nomutilisateur";
$PASS = "motdepasse";
$NAME ="nombase";
$PREFIX = "MyApp_"; 

Если база данных создается сервером автоматически, замените значения на значения, предоставленные сервером. Иначе выбираем свои имена.
Имя пользователя обычно совпадает с именем базы данных. Это программное обеспечение, которое подключается к базе, а не к пользователю.

Имя таблиц добавляется в set.php как экземпляр таблицы пользователей :

$users = "nomtable"; 

Для простоты код открытия подключения к базе также помещается в тот же файл set.php:

$base = mysqli_connect($HOST, $USER, $PASS);
mysqli_select_db($base, $dbname);

Таким образом, мы включаем конфиг в каждый файл, использующий базу для автоматического подключения к ней.
Ресурс $ base будет использоваться всеми SQL-командами .

Если база данных создана сервером, перейдите к следующему шагу, если не создать базу данных, с помощью этой команды:

mysqli_query($base, "CREATE DATABASE $NAME"); 

Таблица пользователей SQL

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

Вот таблица, в первой строке название столбцов, а во второй - тип данных:

то же логин пароль
интегрировать варчар варчар

Запрос на создание таблицы будет:

$query="CREATE TABLE  $users(
           id integer PRIMARY KEY NOT NULL,  
           login varchar(12) UNIQUE NOT NULL,
           password varchar(12) NOT NULL
       )";

Команда PHP становится следующей:

$handler = mysqli_query($base, $query)
    or die("Connexion impossible à $users"); 

Очистить таблицу

DROP TABLE $users 

Добавить столбец

Если требуется добавить дополнительную информацию, например сохранить сообщения электронной почты, можно изменить таблицу, добавив столбец, имя и тип данных которого:

ALTER TABLE $users ADD emails varchar(64) 

Удалить столбец

Чтобы очистить только поле в уже созданной и заполненной таблице:

ALTER TABLE $users DROP COLUMN emails  

Колонка «email» удалена, данные в колонке также удаляются.

Добавить пользователя

Данные предоставляются формой в переменных, полученных сценарием PHP:

$id = "123";
$login = "moi";
$password = "xxx";

Мы передаем следующий запрос:

INSERT INTO $users(id, login, password) VALUES('$id','$login','$password')  

Изменение информации

Пользователь хочет сменить логин, эту единственную информацию можно изменить в таблице:

UPDATE $users SET login='$login' WHERE id=$id

Чтобы изменить несколько данных, их можно разделить запятой:

UPDATE $users SET login='$login', password='$password' WHERE id=$id

Удалить пользователя

По заказу администратора на основе идентификатора:

DELETE FROM $users WHERE id=$id 

Можно использовать имя с именем WHERE = $ login .

Поиск пользователя

Зная логин пользователя, хочется получить доступ к другим данным.

SELECT * FROM $users WHERE login=$login

Данные извлекаются командой PHP mysql_fetch_assoc.
Пример:

$handler = mysqli_query($base, "SELECT * FROM $users WHERE login = '$login'");
$data = mysqli_fetch_assoc($handler);
$id = $data['id'];
$password = $data['password'];

Проверить логин

Для входа в систему каждый пользователь использует уникальное имя. Перед любой регистрацией следует проверить, не используется ли уже предлагаемое название, а потому уже не существует в базе.

Функция mysql_num_rows возвращает количество столбцов, выбранных запросом. Это число равно 0, когда ты ищешь строку, а ее нет.
Отсюда и следующая функция:

function isLoginUsed($login)
{
   global $base;
   global $users;
   $handler = mysqli_query($base, "SELECT * FROM $users WHERE login = '$login'");
   if($handler == false) return 0;
   return(mysqli_num_rows($handler) == 0);
}

Функция возвращает значение true, если логин существует и занимает строку в базе .

Вернуть последнюю запись

Идентификатор каждого пользователя - это номер, который автоматически увеличивается с каждой новой регистрацией.

Номер последнего зарегистрированного пользователя не хранится в памяти между сеансами, его нужно найти в базе.

SELECT id FROM $users ORDER BY id DESC LIMIT 1 

- Выберите только идентификатор: SELECT id
- Мы классифицируем по id и в порядке убывания: ORDER BY ID DESC
- Сохраняется только одна запись: LIMIT 1

Поэтому первая запись возвращается в список идентификаторов, классифицированных в порядке убывания.
Найденное значение еще предстоит увеличить, чтобы создать новый идентификатор.

$handler = mysqli_query($base, "SELECT id FROM $users ORDER BY id DESC LIMIT 1");
$data = mysqli_fetch_assoc($handler);
$id = $data['id'];
$id = intval($id) + 1;

Форма регистрации

Он отправляет данные в PHP-скрипт, который добавляет пользователя .

<form method="post" action="register.php">
  <input type="text" name="login" value="" >
  <input type="password" name="pass" value="">
</form>

Упрощенный сценарий register.php:

<?php
$login=$_POST['login'];
$password =$_POST['pass'];


// controle du login
isLoginUsed($login) die("Login déjà utilisé");


// création de l'id
$handler = mysqli_query($base, "SELECT id FROM $users ORDER BY id DESC LIMIT 1");
$data = mysqli_fetch_assoc($handler);
$id = $data['id'];
$id = intval($id) + 1;

// ajout de l'utilisateur
$query="INSERT INTO $users(id, login, password) VALUES('$id','$login','$password')";
mysqli_query($base, $query);
?>  

Этот сценарий является чисто дидактическим и служит для понимания управления файлами пользователей. Можно избежать необходимости выполнять полноценные скрипты, используя PHP-фреймворк.