Полный цикл в digital

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

Для добавления данных в БД MySQL применяется sql-команда INSERT, которая имеет следующий синтаксис:

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

Данная команда также выполняется методом exec() объекта PDO. Стоит отметить, что для sql-команд INSERT, UPDATE и DELETE метод exec() возвращает количество затронутных командой строк (добавленных, измененных или удаленных). Таким образом, мы можем узнать сколько строк было добавлено.

Сначала рассмотрим простейшее добавление одного объекта в БД. Для примера возьмем созданную в прошлой теме базу данных testdb1 и созданную в ней таблицу Users со следующим определением:

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

И для добавления определим следующий скрипт PHP:

<?php
try {
$conn = new PDO("mysql:host=localhost;dbname=testdb1", "root", "mypassword");
// SQL-выражение для добавления данных
$sql = "INSERT INTO Users (name, age) VALUES ('Tom', 37)";
$affectedRowsNumber = $conn->exec($sql);
echo "В таблицу Users добавлено строк: $affectedRowsNumber";
}
catch (PDOException $e) {
echo "Database error: " . $e->getMessage();
}
?>

Команда на добавление здесь выглядит следующим образом:

"INSERT INTO Users (name, age) VALUES ('Tom', 37)"

То есть в столбец name добавляется строка Tom, а в столбец age - число 37. Для столбца id не добавляется никакого значения, потому что при создании таблицы для него указан параметр AUTO_INCREMENT - то есть значение этого столбца у каждой добавляемой строки будет автоматически увеличиваеться по сравнению с предыдущей на единицу.

При добавлении мы получаем количество добавленных строк в переменую $affectedRowsNumber и затем выводим ее значение в браузере. Поэтому при успешном добавлении мы увидим:

В таблицу Users добавлено строк: 1

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

Также мы можем добавить сразу несколько объектов:

<?php
try {
$conn = new PDO("mysql:host=localhost;dbname=testdb1", "root", "mypassword");
$sql = "INSERT INTO Users (name, age) VALUES 
('Sam', 41), 
('Bob', 29), 
('Alice', 32)";
$affectedRowsNumber = $conn->exec($sql);
echo "В таблицу Users добавлено строк: $affectedRowsNumber";
}
catch (PDOException $e) {
echo "Database error: " . $e->getMessage();
}
?>

Здесь в таблицу добавляется три строки. Соответственно в браузере мы увидим:

В таблицу Users добавлено строк: 3

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

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

<!DOCTYPE html>
<html>
<head>
<title>hmarketing.ru</title>
<meta charset="utf-8" />
</head>
<body>
<?php
if (isset($_POST["username"]) && isset($_POST["userage"])) {
$username = $_POST["username"];
$userage = $_POST["userage"];
try {
$conn = new PDO("mysql:host=localhost;dbname=testdb1", "root", "mypassword");
$sql = "INSERT INTO Users (name, age) VALUES ('$username', $userage)";
$affectedRowsNumber = $conn->exec($sql);
// если добавлена как минимум одна строка
if($affectedRowsNumber > 0 ){
echo "Data successfully added: name=$username  age= $userage";  
}
}
catch (PDOException $e) {
echo "Database error: " . $e->getMessage();
}
}
?>
<h3>Create a new User</h3>
<form method="post">
<p>User Name:
<input type="text" name="username" />
</p>
<p>User Age:
<input type="number" name="userage" />
</p>
<input type="submit" value="Save">
</form>
</body>
</html>

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

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

Если эти данные имеются, то есть был отправлен post-запрос с данными на добавление, то мы получаем эти данные в переменные и добавляем их в бд.

$sql = "INSERT INTO Users (name, age) VALUES ('$username', $userage)";

Если была добавлена строка, то есть метод exec() возвратил число больше нуля, то выводим пользователю соответствующее сообщение.

После кода php собственно определена форма на добавление данных с помощью post-запроса.

Запустим скрипт. Введем в форму данные и нажмем на кнопку:

И данные будут добавлены. Вроде все хорошо. Однако здесь есть большой недостаток.

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг