-
Notifications
You must be signed in to change notification settings - Fork 81
Expand file tree
/
Copy pathexamples.xml
More file actions
147 lines (133 loc) · 4.13 KB
/
examples.xml
File metadata and controls
147 lines (133 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: aa2e1accf0888a290a76b9193844d0d7b7bd40b8 Maintainer: aur Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="pgsql.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.examples;
<section xml:id="pgsql.examples-basic">
<title>Основы взаимодействия с БД PostgreSQL</title>
<para>
Простой пример, который показывает, как подключиться к БД,
выполнить запрос, вывести строки с результатами запроса и закрыть соединение с БД PostgreSQL.
<example>
<title>Пример работы с модулем PostgreSQL</title>
<programlisting role="php">
<![CDATA[
<?php
// Подключение к СУБД и выбор базы данных
$dbconn = pg_connect("host=localhost dbname=publishing user=www password=foo")
or die('Не удалось соединиться: ' . pg_last_error())
;
// Выполнение SQL-запроса
$query = 'SELECT * FROM authors';
$result = pg_query($dbconn, $query) or die('Ошибка запроса: ' . pg_last_error());
// Вывод результатов в виде HTML-разметки
echo "<table>\n";
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
// Очистка результата
pg_free_result($result);
// Закрытие соединения
pg_close($dbconn);
?>
]]>
</programlisting>
</example>
</para>
</section>
<section xml:id="pgsql.examples-queries">
<title>Пользовательские функции взаимодействия с БД PostgreSQL</title>
<para>
Пример содержит пользовательские функции, аналогичные
устаревшим функциям БД MySQL.
<example>
<title>Пример пользовательских функций для работы с БД PostgreSQL</title>
<programlisting role="php">
<![CDATA[
<?php
// Функция потребуется, поскольку PostgreSQL-соединение связывает базу данных
function pg_list_dbs($db)
{
assert(is_resource($db));
$query = '
SELECT
d.datname as "Name",
u.usename as "Owner",
pg_encoding_to_char(d.encoding) as "Encoding"
FROM
pg_database d LEFT JOIN pg_user u ON d.datdba = u.usesysid
ORDER BY 1;
';
return pg_query($db, $query);
}
// Список таблиц
function pg_list_tables($db)
{
assert(is_resource($db));
$query = "
SELECT
c.relname as \"Name\",
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as \"Type\",
u.usename as \"Owner\"
FROM
pg_class c LEFT JOIN pg_user u ON c.relowner = u.usesysid
WHERE
c.relkind IN ('r','v','S','')
AND c.relname !~ '^pg_'
ORDER BY 1;
";
return pg_query($db, $query);
}
// Смотрите также описание функции pg_meta_data(). Функция возвращает определение поля в виде массива
function pg_list_fields($db, $table)
{
assert(is_resource($db));
$query = "
SELECT
a.attname,
format_type(a.atttypid, a.atttypmod),
a.attnotnull,
a.atthasdef,
a.attnum
FROM
pg_class c,
pg_attribute a
WHERE
c.relname = '".$table."'
AND a.attnum > 0 AND a.attrelid = c.oid
ORDER BY a.attnum;
";
return pg_query($db, $query);
}
?>
]]>
</programlisting>
</example>
</para>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->