PostgreSQL с php - подробное введение
Требования к разработке и установке
Чтобы установить PostgreSQL на Linux и Windows, мы обсудили здесь подробное описание процесса установки.
Вы можете использовать веб-сервер Apache, PHP, PostgreSQL и phpPgAdmin (который является отличным инструментом для управления проектами PHP-PostgreSQL) для создания базового веб-приложения.
Самый простой способ установить и внедрить все вышеперечисленное программное обеспечение - это установить стек WAPP (Windows, Apache, PostgreSQL, PHP). BITNAMI - это пакет программного обеспечения, который предлагает пакет WAPP . Вы можете скачать его с http://bitnami.org/learn_more/installers и, дважды щелкнув по файлу установщика, его легко установить в Windows. Во время установки он спрашивает, где его установить, а также запрашивает пароль, который впоследствии потребуется для входа в phpPgAdmin.
Подключайтесь к PostgreSQL с помощью собственных функций PHP
Предположим, у нас есть следующая таблица (книга) в базе данных "postgres". Вот структура таблицы:
имя_столбца | is_nullable | тип данных | character_maximum_length | numeric_precision | NUMERIC_SCALE --------------------- + ------------- + -------------- ----- + -------------------------- + ----------------- - + --------------- book_id | НЕТ | характер меняется | 10 | | автор | ДА | характер меняется | 25 | | издатель | ДА | характер меняется | 25 | | date_of_publication | ДА | дата | | | цена | ДА | числовой | | 8 | 2
PHP предоставляет множество функций для работы непосредственно с базами данных PostgreSQL. Вот некоторые функции:
pg_connect : функция используется для открытия соединения PostgreSQL.
Версия : (PHP 4, PHP 5)
Синтаксис :
ресурс pg_connect (строка $ connection_string [, int $ connect_type])
Параметры :
- connection_string: Строка connection_string может быть пустой, чтобы использовать все параметры по умолчанию, или она может содержать один или несколько параметров, разделенных пробелами. В настоящее время распознаются следующие ключевые слова параметров: host, hostaddr, port, dbname (по умолчанию - значение пользователя), user, пароль, connect_timeout, options, tty (игнорируется), sslmode, requiressl (устарело в пользу sslmode) и service. Какой из этих аргументов существует, зависит от вашей версии PostgreSQL.
- connect_type: если передается PGSQL_CONNECT_FORCE_NEW, создается новое соединение, даже если строка_соединения идентична существующему соединению. Если задано PGSQL_CONNECT_ASYNC, то соединение устанавливается асинхронно. Состояние соединения может быть проверено с помощью pg_connect_poll () или pg_connection_status ().
Возвращаемое значение : ресурс соединения PostgreSQL в случае успеха, FALSE в случае ошибки.
pg_query: выполнить запрос
Версия : (PHP 4> = 4.2.0, PHP 5)
Синтаксис :
ресурс pg_query ([ресурс $ соединение], строка $ запрос)
Параметры :
- соединение: ресурс соединения с базой данных PostgreSQL. Если соединение отсутствует, используется соединение по умолчанию. Соединением по умолчанию является последнее соединение, выполненное с помощью pg_connect () или pg_pconnect ().
- запрос: SQL-оператор или операторы, которые должны быть выполнены.
Возвращаемое значение : ресурс результата запроса в случае успеха или FALSE в случае ошибки.
Вставить данные в таблицу с помощью PHP
Мы создадим HTML-форму и PHP-скрипт для вставки данных в таблицу «book». Вот код (имя файла insert.php):
<!DOCTYPE html>
<head>
<title>Insert data to PostgreSQL with php - creating a simple web application</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
li {listt-style: none;}
</style>
</head>
<body>
<h2>Enter information regarding book</h2>
<ul>
<form name="insert" action="insert.php" method="POST" >
<li>Book ID:</li><li><input type="text" name="bookid" /></li>
<li>Book Name:</li><li><input type="text" name="book_name" /></li>
<li>Author:</li><li><input type="text" name="author" /></li>
<li>Publisher:</li><li><input type="text" name="publisher" /></li>
<li>Date of publication:</li><li><input type="text" name="dop" /></li>
<li>Price (USD):</li><li><input type="text" name="price" /></li>
<li><input type="submit" /></li>
</form>
</ul>
</body>
</html>
<?php
$db = pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=admin123");
$query = "INSERT INTO book VALUES ('$_POST[bookid]','$_POST[book_name]',
'$_POST[author]','$_POST[publisher]','$_POST[dop]',
'$_POST[price]')";
$result = pg_query($query);
?>
Вот как выглядит форма для вставки данных:
Используйте эту форму, чтобы ввести некоторые данные в таблицу «книга».
Получение и обновление данных с помощью PHP
На следующем шаге мы создадим форму, чтобы мы могли видеть детали записей книги и обновлять существующие данные таблицы «книга». Для этого мы создадим форму, в которой пользователь может указать идентификатор книги, и он покажет всю информацию, хранящуюся в базе данных, относительно этой конкретной книги. Итак, вы узнаете, как получать данные из таблицы, как отображать эти данные с помощью PHP и как обновлять данные.
Вот код (имя файла enter-bookid):
<!DOCTYPE html>
<head>
<title>Enter bookid to display data - creating a simple web application</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
li {list-style: none;}
</style>
</head>
<body>
<h2>Enter bookid and enter</h2>
<ul>
<form name="display" action="enter-bookid.php" method="POST" >
<li>Book ID:</li><li><input type="text" name="bookid" /></li>
<li><input type="submit" name="submit" /></li>
</form>
</ul>
</body>
</html>
<?php
$db = pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=admin123");
$result = pg_query($db, "SELECT * FROM book where book_id ='$_POST[bookid]'");
$row = pg_fetch_assoc($result);
if (isset($_POST['submit']))
{
echo "<ul>
<form name='update' action='enter-bookid.php' method='POST' >
<li>Book ID:</li><li><input type='text' name='bookid_updated' value='$row[book_id]' /></li>
<li>Book Name:</li><li><input type='text' name='book_name_updated' value='$row[book_name]' /></li><li>Author:</li><li><input type='text' name='author_updated' value='$row[author]' /></li> <li>Publisher:</li><li><input type='text' name='publisher_updated' value='$row[publisher]' /></li> <li>Date of publication:</li><li><input type='text' name='dop_updated' value='$row[date_of_publication]' /></li>
<li>Price (USD):</li><li><input type='text' name='price_updated' value='$row[price]' /></li>
<li><input type='submit' name='new' /></li>
</form>
</ul>";
}
if (isset($_POST['new']))
{
$result1 = pg_query($db, "UPDATE book SET book_id ='$_POST[bookid_updated]', book_name ='$_POST[book_name_updated]',
author ='$_POST[author_updated]', publisher ='$_POST[publisher_updated]',date_of_publication ='$_POST[dop_updated]',
price ='$_POST[price_updated]'");
if (!$result1)
{
echo "Update failed!!";
} else
{
echo "Update successfull;";
}
}
?>
Соединитесь с PostgreSQL, используя PDO (объекты данных PHP)
Начиная с версии 5.1, PHP предоставляет новую библиотеку абстракций подключения к базе данных, объекты данных PHP или PDO. PDO абстрагирует доступ к базе данных и позволяет использовать код, который может обрабатывать различные типы баз данных.
Используйте следующий код PHP для подключения к PostgreSQL и выбора базы данных. Замените $ dbname на имя базы данных, $ dbuser на ваше имя пользователя и $ dbpass на ваш пароль.
<?php
$dbuser ='postgres';
$dbpass ='abc123';
$host ='localhost';
$dbname ='postgres';
$dbh = new PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass);
?>
Обработка ошибок подключения:
Если есть какие-либо ошибки соединения, объект PDOException будет брошен. Вы можете перехватить исключение, если хотите обработать условие ошибки, или оставить его глобальному обработчику исключений, который можно настроить с помощью set_exception_handler ().
Вот пример для обработки ошибок:
<?php
$dbuser ='postgres';
$dbpass ='abc123';
$host ='localhost';
$dbname='postgres';
$dbh = new PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass, array(
PDO::ATTR_PERSISTENT => true));
?>
Запрос:
После того, как код подключится к PostgreSQL и выберет базу данных, вы можете запускать SQL-запросы и выполнять другие операции. Например, следующий код PHP запускает SQL-запрос, который извлекает имя, фамилию и страну (порядок по стране) из таблицы user_details и сохраняет результат в $ sql.
<?php
try {
$dbuser ='postgres';
$dbpass ='abc123';
$host ='localhost';
$dbname='postgres';
$connec = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$sql ='SELECT fname, lname, country FROM user_details ORDER BY country';
foreach ($connec->query($sql) as $row)
{
print $row['fname'] . " ";
print $row['lname'] . "-->";
print $row['country'] . "<br>";
}
?>
Итак, вы узнали, как вставлять данные из формы HTML и как получать, отображать и обновлять данные в PostgreSQL с помощью PHP.
Смотрите также: SQL-инъекция , объекты данных PHP (PDO)
Предыдущий: Подключение к PostgreSQL
Далее: Типы данных
Новый контент: Composer: менеджер зависимостей для PHP , R программирования