На рис. 4.13 показана веб-страница, сгенерированная этим кодом.
Рис. 4.13.Форма ввода данных
Создавая эту форму, я указал, что при ее подтверждении (то есть при нажатии кнопки Отправить) введенные пользователем значения полей будут переданы в сценарий save.php по методу POST. В сценарии save.php мы будем использовать уже известные нам PHP-функции:
• функции подключения к серверу MySQL и выбора базы данных, которые мы рассматривали в подразделе «Подготовительные действия»;
• функцию mysql_query(), которая обеспечивает выполнение SQL-команды на сервере MySQL. Если SQL-команда не предполагает получение данных из базы (такими командами являются, например, команды INSERT, UPDATE, DELETE), то функция возвращает значение TRUE в случае успешного выполнения команды и значение FALSE в случае ошибки;
• функции обработки ошибок, о которых вы узнали в подразделе «Обработка ошибок».
Итак, создадим в папке htdocs корневой папки XAMPP файл save.php, содержащий следующий код (листинг 4.8).
Листинг 4.8.Сохранение данных в базе
Если, например, в форме были введены значения полей Иванов, 157400 и Москва, а/я 255, то вызов функции
$qresult = mysql_query(«INSERT INTO Customers
(name,phone,address)
VALUES
(\'».$name.»\',\'».$phone.»\',\'».$address.»\')»);
после подстановки значений переменных $name, $phone и $address будет выглядеть следующим образом:
$qresult = mysql_query(«INSERT INTO Customers
(name,phone,address)
VALUES
(\'Иванов\',\'157400\',\'Москва, а/я 225\')»);
Если команда INSERT была выполнена успешно, то сценарий save.php выведет на странице соответствующее сообщение (рис. 4.14).
Рис. 4.14.Результат сохранения данных
Мы почти завершили создание приложения, которое записывает информацию в базу данных. Однако нужно сделать важное дополнение, связанное с некорректным сохранением значений, содержащих спецсимволы. Предположим, например, что пользователь вводит на веб-странице в поле Ваше имя значение д\'Артаньян. Тогда вызов PHP-функции
mysql_query(“INSERT INTO Customers (name,phone,address)
VALUES
(\'”.$name.”\',\'”.$phone.”\',\'”.$address.”\')”);
приведет к попытке выполнения некорректной SQL-команды
INSERT INTO Customers
(name,phone,address)
VALUES (\'д\'Артаньян\',\'Телефон\',\'Адрес\');
В результате произойдет ошибка и сохранить в базе введенные пользователем данные не удастся. Избежать этой ошибки можно с помощью функции
mysql_real_escape_string(«<���Строка>»[, <���Указатель на соединение>]);
Функция mysql_real_escape_string() экранирует строку, полученную в качестве аргумента, то есть перед каждым специальным символом в этой строке (например, перед одинарной кавычкой) помещает обратную косую черту. Например, если в качестве аргумента передана строка д\'Артаньян, то функция возвращает значение д\\'Артаньян. Таким образом, при вызове PHP-функции
mysql_query(“INSERT INTO Customers (name,phone,address)
VALUES
(\'”.mysql_real_escape_string($name).”\',
\'”.mysql_real_escape_string($phone).”\',
\'”.mysql_real_escape_string($address).”\')”);
будет выполнена корректная SQL-команда
INSERT INTO Customers
(name,phone,address)
VALUES (\'д\\'Артаньян\',\'Телефон\',\'Адрес\');
Кроме того, в ряде случаев функция mysql_real_escape_string() позволяет обезопасить PHP-приложение от SQL-инъекций, то есть предотвратить выполнение SQL-команд, которые недобросовестный пользователь может ввести в текстовые поля на веб-странице.
Исправим сценарий save.php, добавив вызов функции mysql_real_escape_string() (листинг 4.9).
Листинг 4.9.Сохранение данных в базе
На этом мы завершаем изучение PHP-функций, позволяющих организовать обмен данными с MySQL. В завершение кратко обобщим изложенные выше сведения.
Итоги
В разделе 4.1 «Интерфейс с PHP» вы познакомились с примерами PHP-приложений, использующих базу данных MySQL. Все они имеют сходную структуру:
• подключение к серверу MySQL;
• выбор базы данных;
• установка кодировки;
• выполнение SQL-команды (ввод, изменение или получение данных);
• обработка ошибки.
При этом мы рассмотрели только самые необходимые для взаимодействия с MySQL функции языка PHP. Полный список этих функций вы можете найти в Руководстве по PHP на странице http://www.php.net/manual/ru/ref.mysql.php.
В следующем разделе мы поговорим о том, как взаимодействуют с базой данных веб-приложения на языке Perl.
В этом разделе мы рассмотрим процесс создания веб-приложения на языке Perl, выполняющего получение информации из базы данных и запись ее в базу.
Выбор платформы для развертывания Perl-приложения аналогичен выбору платформы для PHP-приложения: вы можете воспользоваться хостингом с поддержкой Perl и MySQL либо установить на своем компьютере веб-сервер Apache и интерпретатор языка Perl. При этом все замечания и рекомендации из подраздела «Выбор платформы» остаются в силе.
Читать дальше
Конец ознакомительного отрывка
Купить книгу