До сих пор в приложениях выполнялась только выборка информации из базы данных, и для этого использовались только операторы 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.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Дополнение данных
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Пример практического применения API-интерфейса PHP | Все о MySQL. Удаление данных |