- •Урок 7: Комментарии в скриптах
- •Почему комментарии так важны для ваших скриптов?
- •Как вставлять комментарии?
- •Урок 19: Вставка данных в бд
- •Вставка данных с использованием sql
- •Пример: Вставка новой персоны в таблицу
- •Сохранение пользовательского ввода в бд
- •Наиболее распространённые ошибки начинающих
- •Неверный тип данных
- •Урок 20: Получение данных из бд
- •Пример 1: Запрос данных из бд
- •Пример 2: Сортировка данных по алфавиту, хронологически или численно
- •Получение выбранных данных
- •Пример 3: Адресная книга
- •Код файла list.Php
- •Код файла person.Php
- •Урок 22: Обновление данных в бд
- •Обновление данных с помощью sql
- •Пример: Обновление ячеек в таблице "people"
Урок 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.