До сих пор в приложениях выполнялась только выборка информации из базы данных, и для этого использовались только операторы SELECT. А как же поместить данные в базу данных?
Следующий сценарий демонстрирует использование HTML-формы для вставки данных в базу данных.
Листинг 21.28.
<html> <head>
<basefont face "Arial">
</head>
<body>
<center>
<?php
// форма была введена? 
// нет
if (!$_POST['submit'])
{
?>
<113>Введите свою ссылку :</h3>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table>
<tr>
<td>Имя пользователя</td>
<td><input name="uname" length="10" maxlength="30"></td>
</tr>
<tr>
<td>Название Web-узла</td>
<td><input name="label" length="30" maxlength="30"></td>
</tr>
<tr>
<td>URL Web-узла</td>
<td><input name="url" length="30"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit" value="Submit">
</td>
</tr> </table> </form> <?php
}
// да
else
{
// присвоить данные, полученные методом POST, обычным переменным PHP $uname = $_POST['uname']; $label = $_POST['label']; $url = $_POST['url'];
// проверить все данные для того, чтобы убедиться в том, // что они имеют правильный тип
// в принципе обычно производится более сложная проверка
// например, проверка синтаксиса URL
// но это оставим читателю для развития навыков
if (empty($uname)) { die("Ошибка в поле USERNAME!"); }
if (empty($label)) { die ("Ошибка в поле LABEL!"); }
if (empty($url)) { die(" Ошибка в поле URL!"); }
// задать переменные доступа к серверу
$host = "localhost";
$user= "joe"; $pass = "secret";
$db = "db123";
// открыть соединение с базой данных
$connection = mysql_connect($host, $user, $pass) or die (" Невозможно подключиться!");
// выбрать базу данных
mysql_select_db($db) or die (" Невозможно выбрать рабочую базу данных!");
// проверить существование пользователя // задать строку SQL- запроса
$query = "SELECT uid from bookmark_users WHERE uname = '$uname'"; // выполнить запрос и получить результирующий набор 
$result = mysql_query($query) or die (" Ошибка в запросе: $query. " . mysql_error());
if (mysql_num_rows($result)> 0)
{
// пользователь существует // получить идентификатор пользователя $row = mysql_fetch_assoc($result); $uid = $row['uid'];
}
else
{
// такого пользователя не существует // создать запись о пользователе
$query2 = "INSERT INTO bookmark_users (uname) VALUES ('$uname')";
mysql_query ($query2) or die (" Ошибка в запросе: $query2. " . mysql_error());
// и получить идентификатор пользователя для только что соз­данной записи
$uid = mysql_insert_id($connection);
}
// освободить память, занятую результирующим набором mysql_free_result($result); // а теперь вставить ссылку // задать строку SQL- запроса
$query= "INSERT INTO bookmark_urls(fk_uid, label, url) VALUES (,$uid,,,$label,,,$url')";
// выполнить запрос и получить результирующий набор
$result = mysql_query($query) or die (" Ошибка в запросе: $query. " . mysql_error());
// закрыть соединение
mysql_close($connection);
?>
<h3>Успешно!</h3>
<table>
<tr>
<td>
<?php echo $_POST['uname']; ?> - ссылки сохранены.
</td>
</tr> <?php
}
?>
</center>
</body>
</html>
Как видим, процедура добавления записи в базу данных довольно проста. Достаточно запустить запрос, и ваш оператор INSERT будет выполнен. Как обсуждалось ранее, един­ственным способом проверить успешность операции INSERT является проверка значения переменной $result. Если значение этой переменной "ложь", то что-то было выполнено неверно.
На рис. 21.7 и 21.8 показан вывод предыдущего сценария.
Дополнение данных
Не вся правда
Опытные Web-разработчики, скорее всего, обратили внимание на то, что этот пример несколько упрощен. Здесь не производится адекватная аутентификация пользователя на каждой странице. Кроме того, здесь нет управления сеансом, проверки введенных значений и других нюансов реального программирования. Но это не упущение. Напротив, все эти конструкции были опущены преднамеренно, с тем чтобы не отвлекать внимание читателя от основного: использования PHP для построения Web-приложений, работающих с базами данных. Поэтому представленный в этом разделе программный код является прежде всего иллюстрацией, а читателю можно категорически порекомендовать ни в коем случае не использовать его при программировании реальных задач.
Если вы интересуетесь, как можно создать безопасное, надежно работающее Web-приложение, обратитесь в сообщество Melonfire по адресу www.melonfire.com/ community/columns/trog/archives.php?category=PHP.