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