Для взаимодействия с таблицами базы данный mySQL нужны SQL запросы, для того, чтобы взаимодействовать с ней на своем сайте / локальном сервере
Для локального сервера мы будем использовать уже полюбившийся нам XAMPP.
После установки, запустите XAMPP и включите первые 2 службы: Apache Server и SQL
Теперь заходим по адресу
http://localhost/phpmyadmin/
Здесь создайте новую базу данных
Назовём её
mysite
Создаём таблицу с названием test, 3 столбца
id, INT, Length 11, A_I
login, VARCHAR, Length 25
password, VARCHAR, Length 55
Не забудьте отметить A_I (Auto Increment) для столбца id, так при добавлении записей он будет повышаться на 1 автоматически.
Сейчас создаём новую папку по этому пути
xampp/htdocs/mysite.ru
Где mysite.ru - название вашего сайта
В этой папке создаем index.php и создаем базовую структуру HTML
<!DOCTYPE html>
<head>
</head>
<body>
</body>
</html>
В самом начале, перед строчкой
<!DOCTYPE html>
Подключимся к нашей базе данных mysite
<?php
mysqli_connect("localhost", "root", "", mysite)
or die("Error connecting to the database");
?>
У функции mysqli() 4 аргумента
1 - localhost, подключение к собственному серверу
2 - Пользователь root
3 - Пароль, пустой
4 - Имя базы данных, mysite
or die(); - вывод текста в случае ошибки.
И так, мы создадим несколько форм внутри тела body
Предварительно зададим стили в теге <head>
<head>
<style>
#container{
margin: 150px 0 0 0;
width: 100%;
}
.column{
text-align: center;
width: 25%;
float: left;
}
.column > form > p > input{
padding: 7px;
}
</style>
</head>
Теперь создадим 4 колонки с формами для демонстрации в блоке container
<div id="container">
<div class="column">
<h3>INSERT</h3>
<form method="post" action="php_sql.php">
<p><input name="insert_login" type="text" placeholder="Логин"></p>
<p><input name="insert_password" type="password" placeholder="Пароль"></p>
<p><input name="insert_btn" type="submit" value="Войти"></p>
</form>
</div>
<div class="column">
<h3>SELECT</h3>
<form method="post" action="php_sql.php">
<p><input name="select_btn" type="submit" value="Вывести"></p>
</form>
</div>
<div class="column">
<h3>UPDATE</h3>
<form method="post" action="php_sql.php">
<p><input name="update_id" type="text" placeholder="id"></p>
<p><input name="update_login" type="text" placeholder="Логин"></p>
<p><input name="update_password" type="password" placeholder="Пароль"></p>
<p><input name="update_btn" type="submit" value="Обновить"></p>
</form>
</div>
<div class="column">
<h3>DELETE</h3>
<form method="post" action="php_sql.php">
<p><input name="delete_login" type="text" placeholder="Логин"></p>
<p><input name="delete_btn" type="submit" value="Удалить"></p>
</form>
</div>
</div>
Мы подготовили базу для отправки запросов. Осталось добавить запись в нашу таблицу /phpmyadmin
Выберите вашу базу данных, вашу таблицу (mysite) и нажмите
INSERT (вставить)
вверху страницы. Добавьте пару записей (не заполняя поле id, так как оно будет автоматически заполняться). Вот какие данные я вставлю
login: test1
password: p_test1
login: test2
password: p_test2
Теперь возвращаемся к нашему файлу и заходим в первую из четырёх форм
Запрос INSERT добавляет новую запись в таблицу, как вы уже поняли
Помните, что в случае, если вы не добавите в таблицу обязательное значение (в колонке не задано значение по дефолту и колонка не A_I - auto increment), то вам выдаст ошибку).
В самом начале документа пишем наш пост запрос, до тега
<!DOCTYPE html>
Пишем здесь наш PHP код
<?php
?>
<!DOCTYPE html>
Напомню, что доверять вводимым данным пользователя нельзя. Если данные не будут хэшироваться (как в случае с паролем с помощью функции hash()), то нужно обязательно проверять их с помощью функции preg_match();
Сейчас это писать не нужно, это пример
if(preg_match("/[A-Za-z0-9]/", $str)){
----
}
Для начала подключаемся к базе данных, mysite - база данных, test - имя таблицы
$connection=mysqli_connect("localhost","root", "", "mysite");
Проверяем отправку POST запроса по кнопке и передаем в строку запроса наши данные. После чего передаем строку функции mysqli_query() как второй аргумент, 1 аргумент $connection (т.е. подключение)
$connection=mysqli_connect("localhost","root", "", "mysite");
if(isset($_POST['insert_btn'])){
$login = $_POST['insert_login'];
$password = $_POST['insert_password'];
$query = "INSERT test SET login='$login', password='$password'";
$result = mysqli_query($connection, $query);
}
Теперь проверим таблицу и видим в ней новые переданные значения.
Отлично, переходим ко второй форме и второму запросу, а именно SELECT
SELECT нужен, как понятно из названия, для выбора конкретной строки и даже конкретных столбиков
Формат у команды следующий
SELECT "имена_столбцов_через_запятую или *" FROM "имя_таблицы" WHERE "условие" (необязательно ORDER BY "имя_столбца" ASC|DESC) (необязательно LIMIT "число") ;
Что же значат ASC и DESC? Когда у вас есть числовая колонка и вы хотите сортировать её на этапе запроса (от большего к меньшему DESC, от меньшего к большему ASC), то после основного запроса вы пишите:
ORDER BY "имя колонки" ASC|DESC
LIMIT "число" означает количество строчек, которые вы хотите получить как результат
Вот пример полноценного запроса к нашей таблице
SELECT login, password FROM test WHERE id < 10 ORDER BY id DESC LIMIT 2
Давайте теперь по нажатию кнопки будем селектировать и выводить наших пользователей и их пароли.
if(isset($_POST['select_btn'])){
$query = "SELECT login, password FROM test WHERE id < 10 ORDER BY id DESC LIMIT 2";
$result=mysqli_query($connection, $query);
if(mysqli_affected_rows($connection)!=0){//if(mysqli_num_rows($result) != 0){
for($i=0; $i < mysqli_num_rows($result); $i++){
$arr = mysqli_fetch_assoc($result);
echo "<p>The login is ".$arr['login'] ." and the password is ".$arr['password'] ."</p>";
}
}
else{
echo "<p>Строк не найдено</p>";
}
}
Теперь перейдём к апдейту. Здесь мы будем обновлять только ту запись, id которой совпадает с id в таблице.
Типичная команда UPDATE выглядит так:
UPDATE test SET login='$login', password='$password' WHERE id='$id' "
И так, проверяем нажата ли кнопка. Конвертируем id из строки в число. После чего проверяем тип данных id (на всякий случай), и отправляем команду с обновлением на сервер.
if(isset($_POST['update_btn'])){
$id = intval($_POST['update_id']);
if(gettype($id)=="integer"){
$login = $_POST['update_login'];
$password = $_POST['update_password'];
$query = "UPDATE test SET login='$login', password='$password' WHERE id='$id'";
$result = mysqli_query($connection, $query);
if(mysqli_affected_rows($connection)!=0){
echo "<p>Запись обновлена</p>";
}else{
echo "<p>Запись не найдена.</p>";
}
}
else{
echo "<p>Неправильный формат id.</p>";
}
}
Ну и последнее, будем удалять запись в таблице по логину.
Тут все просто, пытаемся найти логин в таблице, если он найдется, то строка удалится
if(isset($_POST['delete_btn'])){
$login = $_POST['delete_login'];
$query = "DELETE FROM test WHERE login='$login'";
$result = mysqli_query($connection, $query);
if(mysqli_affected_rows($connection)!=0){
echo "<p>Запись удалена</p>";
}else{
echo "<p>Запись не найдена.</p>";
}
}
Теперь у нас есть файл с 4 основными запросами на PHP. Исходник можете скачать здесь. Если после скачивания поменяете название, то не забудьте поменять атрибут action у форм.