Добавление данных в MySQLi

Последнее обновление: 09.06.2021

В прошлой теме мы добавили в базу данных таблицу Users с тремя столбцами id, name, age со следующим определением:

CREATE TABLE Users (id INTEGER AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INTEGER)

Теперь добавим в нее данные. Для добавления данных в MySQL применяется команда INSERT:

INSERT INTO название_таблицы (столбец1, столбец2, столбецN) VALUES ( значение1, значение2, значениеN)

Объектно-ориентированный подход

<?php
$conn = new mysqli("localhost", "root", "mypassword", "testdb2");
if($conn->connect_error){
    die("Ошибка: " . $conn->connect_error);
}
$sql = "INSERT INTO Users (name, age) VALUES ('Tom', 37)";
if($conn->query($sql)){
    echo "Данные успешно добавлены";
} else{
    echo "Ошибка: " . $conn->error;
}
$conn->close();
?>

Множественное добавление:

<?php
$conn = new mysqli("localhost", "root", "mypassword", "testdb2");
if($conn->connect_error){
    die("Ошибка: " . $conn->connect_error);
}
$sql = "INSERT INTO Users (name, age) VALUES 
            ('Sam', 41), 
            ('Bob', 29), 
            ('Alice', 32)";
if($conn->query($sql)){
    echo "Данные успешно добавлены";
} else{
    echo "Ошибка: " . $conn->error;
}
$conn->close();
?>

Процедурный подход

<?php
$conn = mysqli_connect("localhost", "root", "mypassword", "testdb3");
if (!$conn) {
  die("Ошибка: " . mysqli_connect_error());
}
$sql = "INSERT INTO Users (name, age) VALUES ('Tom', 37)";
if(mysqli_query($conn, $sql)){
    echo "Данные успешно добавлены";
} else{
    echo "Ошибка: " . mysqli_error($conn);
}
mysqli_close($conn);
?>

Множественное добавление:

<?php
$conn = mysqli_connect("localhost", "root", "mypassword", "testdb3");
if (!$conn) {
  die("Ошибка: " . mysqli_connect_error());
}
$sql = "INSERT INTO Users (name, age) VALUES 
            ('Sam', 41), 
            ('Bob', 29), 
            ('Alice', 32)";
if(mysqli_query($conn, $sql)){
    echo "Данные успешно добавлены";
} else{
    echo "Ошибка: " . mysqli_error($conn);
}
mysqli_close($conn);
?>

Добавление данных из формы HTML

В большинстве случаев добавляемые данные будут приходить из вне, например, присылаться в запросе пользователя. Рассмотрим добавление данных, отправленных из формы HTML. Для этого определим веб-страницу form.html, на которой определим следующий код:

<!DOCTYPE html>
<html>
<head>
<title>METANIT.COM</title>
<meta charset="utf-8" />
</head>
<body>
<h3>Добавление пользователя</h3>
<form action="create.php" method="post">
    <p>Имя:
    <input type="text" name="username" /></p>
    <p>Возраст:
    <input type="number" name="userage" /></p>
    <input type="submit" value="Добавить">
</form>
</body>
</html>

Здесь определены два поля ввода. И по нажатию на кнопку их данные в запросе POST будут уходить скрипту create.php. Теперь определим сам скрипт create.php.

Объектно-ориентированный подход

<?php
if (isset($_POST["username"]) && isset($_POST["userage"])) {
     
    $conn = new mysqli("localhost", "root", "mypassword", "testdb2");
	if($conn->connect_error){
		die("Ошибка: " . $conn->connect_error);
	}
	$name = $conn->real_escape_string($_POST["username"]);
	$age = $conn->real_escape_string($_POST["userage"]);
	$sql = "INSERT INTO Users (name, age) VALUES ('$name', $age)";
	if($conn->query($sql)){
		echo "Данные успешно добавлены";
	} else{
		echo "Ошибка: " . $conn->error;
	}
	$conn->close();
}
?>

Здесь мы проверяем, пришли ли с сервера данные в POST-запросе, которые имеют ключи "username" и "userage":

if (isset($_POST["username"]) && isset($_POST["userage"])) {

Если эти данные имеются, то есть был отправлен post-запрос с данными на добавление, то мы получаем эти данные в переменные и добавляем их в бд. Но перед добавлением к этим данным применяется метод $conn->real_escape_string(), которая принимает сохраняемое значение и экранирует в нем спецсимволы, что позволяет защитить от SQL-инъекций.

В итоге после ввода данных и нажатия на кнопку данные в запросе POST уйдут скрипту create.php, который сохранит их в базу данных.

Добавление данных в MySQL в PHP

Процедурный подход

<?php
if (isset($_POST["username"]) && isset($_POST["userage"])) {
     
    $conn = mysqli_connect("localhost", "root", "mypassword", "testdb3");
	if (!$conn) {
	  die("Ошибка: " . mysqli_connect_error());
	}
	$name = mysqli_real_escape_string($conn, $_POST["username"]);
	$age = mysqli_real_escape_string($conn, $_POST["userage"]);
	$sql = "INSERT INTO Users (name, age) VALUES ('$name', $age)";
		if(mysqli_query($conn, $sql)){
		echo "Данные успешно добавлены";
	} else{
		echo "Ошибка: " . mysqli_error($conn);
	}
	mysqli_close($conn);
}
?>

Здесь применяется функция mysqli_real_escape_string(). Она служит для экранизации символов в строке, которая потом используется в запросе SQL. В качестве параметров она принимает объект подключения и строку, которую надо экранировать.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850