 
        
        MySQL. Библиотека профессионала - Аткинсон Л
..pdf 
402 Глава 19. PHP
 остальных функций. Функция
 остальных функций. Функция 
 создает постоянное со единение. Оно будет сохранено после завершения сценария на случай повторного использования. Такие соединения закрывать не нужно.
 создает постоянное со единение. Оно будет сохранено после завершения сценария на случай повторного использования. Такие соединения закрывать не нужно.
Первый аргумент функции mysql_pconnect  идентифицирует сервер по имени или адресу. Через двоеточие может быть задан номер порта, если он отличается от стандартного (3306). Аналогичным образом задается
 идентифицирует сервер по имени или адресу. Через двоеточие может быть задан номер порта, если он отличается от стандартного (3306). Аналогичным образом задается  Другими двумя аргумен тами являются имя пользователя и пароль.
 Другими двумя аргумен тами являются имя пользователя и пароль.
В листинге 19.1 показан сценарий, который устанавливает соединение с сервером MySQL на узле  и задает базу данных, используемую по умолчанию. В сце нарии не выполняется проверка ошибок, но модуль
 и задает базу данных, используемую по умолчанию. В сце нарии не выполняется проверка ошибок, но модуль  выдаст предупреждение в случае неудачного завершения одной из функций.
 выдаст предупреждение в случае неудачного завершения одной из функций.
<html>
<head>
<body>
 Открытие постоянного
 Открытие постоянного  $dblink
 $dblink 

Выбор базы данных
</body>
Извлечение данных
После подключения к серверу баз данных можно посылать ему запросы с помощью
| функции | 
 | Эта функция принимает в качестве аргумента текст SQL | |
| инструкции плюс идентификатор соединения, полученный от функции | |||
| connect | или mysql_pconnect | и возвращает идентификатор результирующего | |
| набора записей. В случае ошибки возвращается нуль. | |||
| Функция mysql_result | извлекает значение одной ячейки, но гораздо удобнее | ||
| пользоваться функцией | 
 | или | |
| 
 | Все они возвращают следующую запись из указанного набора, что | ||
позволяет эффективно применять их в цикле while.
Рассмотрим пример, показанный в листинге 19.2. Этотсценарий извлекает записи из таблицы user, оформляя результаты запроса в виде HTML таблицы. Обратите внимание на то, что сценарий пытается подключиться к серверу от имени пользова теля root с явно неправильным паролем. Если будете экспериментировать с этим сценарием, подставьте корректные значения имени пользователя и пароля.
 
 
 
Изменение данных 405
not select
Создание таблицы.
| $Query | "CREATE TABLE | 
| "ID | NOT NULL | 
"Name 
 "PRIMARY
 "PRIMARY 
 not create
 not create
Вставка записей.
$Query  "INSERT INTO testapi (Name) VALUES
 "INSERT INTO testapi (Name) VALUES  $name
 $name 
 "Vicky", "Carl", "Ricky",
 "Vicky", "Carl", "Ricky",
"Jeff", "Bob", "Tina",  as $n)
 as $n)
$Query
$Query 
 0,
 0,
 not insert
 not insert
rows 
Удаление записей.
$Query  "DELETE FROM testapi WHERE ID
 "DELETE FROM testapi WHERE ID
 not delete
 not delete
rows 
Обновление записей.
$Query  "UPDATE testapi SET Name
 "UPDATE testapi SET Name
 not update
 not update
rows 
Удаление таблицы.
 
406 Глава 19. PHP
$Query  "DROP TABLE
 "DROP TABLE
not drop
</body>
 
PERL
 этой
 этой 
Подготовка программы Извлечение данных Изменение данных
 
 
410 Глава 20. Perl
После инсталляции модуля DBIи драйвера MySQL подключение к серверу  ствляется с помощью
 ствляется с помощью  метода:
 метода: 
 (листинг 20.1). Он возвращает дескриптор базы данных. Первый аргумент метода определяет источник данных. Компоненты этойстроки разделяютсядвоеточиями. Первый компонент
 (листинг 20.1). Он возвращает дескриптор базы данных. Первый аргумент метода определяет источник данных. Компоненты этойстроки разделяютсядвоеточиями. Первый компонент  гда равен
 гда равен  Второй компонент идентифицирует драйвер, в данном случае
 Второй компонент идентифицирует драйвер, в данном случае  Третий компонент — это имябазы данных. Дополнительно можно указать
 Третий компонент — это имябазы данных. Дополнительно можно указать  рес узла и порт. Остальные два аргумента метода connect
 рес узла и порт. Остальные два аргумента метода connect  задают имя пользователя и порт. По окончании сеанса необходимо вызвать метод disconnect
 задают имя пользователя и порт. По окончании сеанса необходимо вызвать метод disconnect 
 Подключение модуля
 Подключение модуля  use DBI;
 use DBI;
I Подключение к базе данных. $dbh =
Извлечение данных
После подключения ксерверубазданныхможнопосылатьемузапросыспомощью методов prepare  и execute
 и execute  Первый из них подготавливает инструкцию к вы полнению и возвращаетее дескриптор. Второй метод передает инструкцию серверу и просит его подготовить результаты запроса.
 Первый из них подготавливает инструкцию к вы полнению и возвращаетее дескриптор. Второй метод передает инструкцию серверу и просит его подготовить результаты запроса.
Рассмотрим пример, показанный влистинге 20.2. Этот сценарий извлекает записи из таблицы user и отображает их на экране. Обратите внимание на то, что сценарий пытается подключиться к серверу от имени пользователя root с явно неправильным паролем. Если будете экспериментировать со сценарием, подставьте корректные зна ченияименипользователяипароля.
 Подключение модуля use DBI;
 Подключение модуля use DBI;
§ Подключение к базе данных. my $dbh =
| tt Подготовка запроса. | 
 | |
| my $query | "SELECT User, Host FROM user ORDER BY 1,2"; | |
| my $sth | 
 | 
 | 
| or die | prepare $query: | $dbh >errstr | 
 
Изменение данных 411
Выполнение запроса.
or die  execute $query:
 execute $query: 
 $dbh >errstr
 $dbh >errstr
i Извлечение записей. my 
$sth >fetchrow_array)
my  for $i
 for $i
print 
 $row[$i]
 $row[$i]
i Удаление инструкции.
tt
В этом примере ведется тщательный контроль ошибок. Многие  в случае ошибки возвращают нуль. Ветвь or die интерпретируется только тогда, когда первая часть конструкции равна нулю. Обратите внимание на сообщение об ошибке, в котором указывается, какой запрос потерпел неудачу, и приводится сообщение, по лученное от драйвера.
 в случае ошибки возвращают нуль. Ветвь or die интерпретируется только тогда, когда первая часть конструкции равна нулю. Обратите внимание на сообщение об ошибке, в котором указывается, какой запрос потерпел неудачу, и приводится сообщение, по лученное от драйвера.
Метод 
 возвращает массив значений столбцов, индексация
 возвращает массив значений столбцов, индексация  торых начинается с нуля. Данный сценарий достаточно универсален и позволяет об рабатывать результаты произвольной инструкции SELECT. He делается никаких
 торых начинается с нуля. Данный сценарий достаточно универсален и позволяет об рабатывать результаты произвольной инструкции SELECT. He делается никаких
| предположений о | сколько столбцов имеется в таблице результатов запроса. Это | |
| значение определяется с помощью свойства NUM_OF_FIELDS объекта инструкции. | ||
| Метод etchrow_array | возвращает следующую запись из набора, пока не будет | |
| достигнут конец таблицы. | 
 | |
| В конце сценария вызывается метод | который освобождает память, за | |
| нимаемую инструкцией. | 
 | |
Изменение данных
Если требуется выполнить инструкцию, которая не возвращает набор записей (например, CREATE STATEMENT), воспользуйтесь методом do  объекта базы дан ных. Этот метод возвращает число измененных записей. Для запросов, которые вы полнились успешно, но не меняли никаких записей, возвращается специальное зна чение
 объекта базы дан ных. Этот метод возвращает число измененных записей. Для запросов, которые вы полнились успешно, но не меняли никаких записей, возвращается специальное зна чение 
Представленный ниже сценарий создает таблицу и добавляет в нее записи. Далее происходит удаление части записей, обновление записей и, наконец, удаление всей таблицы. Обратите внимание на способ вставки записей. В массиве name содержатся

 Открытие постоянного соединения.
 Открытие постоянного соединения. not select
 not select "SELECT User, Host FROM user ORDER BY 1,2";
 "SELECT User, Host FROM user ORDER BY 1,2"; Извлечение записей. while($row
 Извлечение записей. while($row 
 в случае ошибки возвращают FALSE. Внутри инструкций if отображается сообщение об ошибке, за которым следуют номер ошибки и ее описание, полученные от сервера
 в случае ошибки возвращают FALSE. Внутри инструкций if отображается сообщение об ошибке, за которым следуют номер ошибки и ее описание, полученные от сервера

 возвращает объект, содержащий описание полей указанного набора записей. В данном примере используется только свойство name этого объекта, хотя в нем хранится вся информация о
 возвращает объект, содержащий описание полей указанного набора записей. В данном примере используется только свойство name этого объекта, хотя в нем хранится вся информация о 
 чая его тип и размерность. При очередном обращении функция
 чая его тип и размерность. При очередном обращении функция 

 возвращает описание следующего столбца, поэтому она вызывается в цикле.
 возвращает описание следующего столбца, поэтому она вызывается в цикле. etch_row
etch_row  возвращает массив значений столбцов, индексация которых начинается с нуля. Поскольку вданном примере записи отображаются цели ком (в цикле
 возвращает массив значений столбцов, индексация которых начинается с нуля. Поскольку вданном примере записи отображаются цели ком (в цикле  нет необходимости адресовать отдельные столбцы.
 нет необходимости адресовать отдельные столбцы. но вызывать функцию
 но вызывать функцию  f
 f  нет необходимости. Если требуется узнать число добавленных или
 нет необходимости. Если требуется узнать число добавленных или  ненных записей, воспользуйтесь функцией
 ненных записей, воспользуйтесь функцией 
 ected_rows
ected_rows  (листинг 19.3).
 (листинг 19.3).
 вставляет обратную косую черту перед каждым символом, имеющим специальное назначение в SQL, например перед одинарной кавычкой. С помощью функции
 вставляет обратную косую черту перед каждым символом, имеющим специальное назначение в SQL, например перед одинарной кавычкой. С помощью функции 
 из текста запроса удаляется хвостовая запятая.
 из текста запроса удаляется хвостовая запятая.
 Некоторые сценарии MySQL написаны именно на Perl. Сценарии Perl прекрасно работают в
 Некоторые сценарии MySQL написаны именно на Perl. Сценарии Perl прекрасно работают в :mysql и методов DBI. Для получения дополнительной информации можно также воспользоваться команд
 :mysql и методов DBI. Для получения дополнительной информации можно также воспользоваться команд драйвер называется
 драйвер называется 
 Соответствующие файлы можно загрузить на
 Соответствующие файлы можно загрузить на  MySQL или из
 MySQL или из  хивов
 хивов  (Comprehensive Perl Archive Network)
 (Comprehensive Perl Archive Network)  адресу
 адресу  Посетите также
 Посетите также  посвященный интерфейсу DBI
 посвященный интерфейсу DBI 
 перед ком пиляцией исходного кода. В остальном все делается так же, как и в случае любой дру гой программы. Последовательность команд будет такой:
 перед ком пиляцией исходного кода. В остальном все делается так же, как и в случае любой дру гой программы. Последовательность команд будет такой: