Одностраничный учебник SQL: Управление пользователями
Мы посмотрим, как создать SQL-таблицу для хранения списка зарегистрированных участников, и как написать все запросы, необходимые для управления файлом пользователей. Таким образом, основная часть команд SQL будет реализована на практике .
Запросы к базе данных записываются на PHP. Все версии PHP и MySQL поддерживают эти команды.
Создать базу данных
В файле конфигурации, например, 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-фреймворк.