Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник PHP.docx
Скачиваний:
8
Добавлен:
16.08.2019
Размер:
1.01 Mб
Скачать

Урок 19: Вставка данных в бд

В этом уроке мы рассмотрим, как вставлять данные в БД непосредственно из ваших РНР-скриптов.

Вставка данных с использованием sql

Вы используете SQL для вставки данных в БД точно так же, как используете SQL для создания БД и таблиц. Синтаксис SQL-запроса таков:

INSERT INTO ИмяТаблицы(столбец1, столбец2, ...) VALUES(значение1, значение2, ...)

Как видите, вы можете обновлять несколько столбцов в одном SQL-операторе, указывая их в разделённом запятыми списке. Но разумеется, можно также специфицировать только один столбец и одно значение. Столбцы, не упомянутые в данном SQL-операторе, останутся пустыми.

Пример: Вставка новой персоны в таблицу

В этом примере мы используем БД из Урока 18. Скажем, мы хотим вставить персону в БД. Это может быть Gus Goose с номером телефона99887766 и датой рождения 1964-04-20.

Оператор SQL может выглядеть так:

$strSQL = "INSERT INTO people(FirstName,LastName,Phone,BirthDate) VALUES('Gus','Goose','99887766 ','1964-04-20')";

mysql_query($strSQL) or die(mysql_error());

Как видите, SQL-операторы могут быть весьма длинными, и можно легко потерять след. Поэтому лучше записывать SQL-оператор слегка иначе:

strSQL = "INSERT INTO people(";

strSQL = strSQL . "FirstName, ";

strSQL = strSQL . "LastName, "

strSQL = strSQL . "Phone, ";

strSQL = strSQL . "birth) ";

strSQL = strSQL . "VALUES (";

strSQL = strSQL . "'Gus', ";

strSQL = strSQL . "'Goose', ";

strSQL = strSQL . "'99887766', ";

strSQL = strSQL . "'1964-04-20')";

mysql_query($strSQL) or die(mysql_error());

Здесь SQL-оператор строится с разделением предложения на небольшие части с последующим объединением их в переменную $strSQL.

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

Попробуем выполнить следующий код для вставки Gus Goose в БД:

<html>

<head>

<title>Вставка данных в БД</title>

</head>

<body>

<?php

// Соединение с сервером БД

mysql_connect("mysql.myhost.com", "user", "sesame") or die (mysql_error ());

// Выбор БД

mysql_select_db("mydatabase") or die(mysql_error());

// Построение SQL-оператора

$strSQL = "INSERT INTO people(";

$strSQL = $strSQL . "FirstName, ";

$strSQL = $strSQL . "LastName, ";

$strSQL = $strSQL . "Phone, ";

$strSQL = $strSQL . "BirthDate) ";

$strSQL = $strSQL . "VALUES(";

$strSQL = $strSQL . "'Gus', ";

$strSQL = $strSQL . "'Goose', ";

$strSQL = $strSQL . "'99887766', ";

$strSQL = $strSQL . "'1964-04-20')";

// SQL-оператор выполняется

mysql_query($strSQL) or die (mysql_error());

// Закрытие соединения

mysql_close();

?>

<h1>БД обновлена!</h1>

</body>

</html>

Сохранение пользовательского ввода в бд

Часто бывает необходимо сохранить в БД данные, вводимые пользователем.

Вы, вероятно, уже сообразили, что для этого можно создать форму, как в Уроке 11, а значения из формы можно вставить в SQL-оператор. Предположим, у вас имеется простая форма:

<form action="insert.php" method="post">

<input type="text" name="FirstName" />

<input type="submit" value="Save" />

</form>

Эта форма отправляется в файл insert.php , где вы, как показано в Уроке 11, можете получить пользовательский ввод, запросив содержимое формы. В данном конкретном случае SQL-оператор может быть таким:

strSQL = "INSERT INTO people(FirstName) values('" . $_POST["FirstName"] . "')"

Аналогично можно запросить данные кук, сессий строк запроса etc.