Краткое руководство по выполнению SQL-запросов с использованием языка PHP в базе данных PostgreSQL.
За основу берём скрипт подключения PHP к СУБД PostgreSQL, так как в нём прописано условие, которое при ошибке подключения выводит соответствующее сообщение.
Само по себе успешное подключение предполагает дальнейшую работу с базой данных. Поэтому вместо строчки
echo "Подключение к БД прошло успешно…";
можно начинать писать скрипт.
Запрос может быть любым. В нашем примере запрос будет выбирать все колонки и строки из таблицы shop_goods:
SELECT * FROM shop_goods;
Для начала необходимо сформировать начальную структуру документа при помощи конструкции echo()
echo('<html> <head> <meta charset="utf-8"> <title>PostgreSQL query example</title> </head> <body>');
Определим необходимый нам запрос и объявим для него переменную $query
$query = pg_query($db_connect, "SELECT * FROM shop_goods");
Далее проверим условием if, выполняется ли запрос — если не выполняется, выводим соответствующую ошибку:
if (!$query) { die ("Ошибка выполнения запроса"); }
Затем циклом while обходим строки таблицы:
while ($result = pg_fetch_array($query)) { echo "<p>{$result['id']}. {$result['title']} - {$result['category']} - {$result['price']} рублей - {$result['quantity']} штук </p> "; }
Этот цикл позволит вывести результаты запроса.
После этого закрываем теги документа:
echo('</body> </html>');
чистим результаты запроса и закрываем соединение с базой данных:
pg_free_result($query); pg_close();
Полностью рабочий скрипт будет выглядеть примерно так:
<?php $connect_data = "host=127.0.0.1 port=5432 dbname=test_db user=db_user password=yourPassword"; $db_connect = pg_connect($connect_data); if (!$db_connect) { die("Ошибка подключения: " . pg_result_error()); } echo('<html> <head> <meta charset="utf-8"> <title>PostgreSQL query example</title> </head> <body>'); $query = pg_query($db_connect, "SELECT * FROM shop_goods"); if (!$query) { die ("Ошибка выполнения запроса"); } while ($result = pg_fetch_array($query)) { echo "<p>{$result['id']}. {$result['title']} - {$result['category']} - {$result['price']} рублей - {$result['quantity']} штук </p> "; } echo('</body> </html>'); pg_free_result($query); pg_close(); ?>
Результат выполнения данного скрипта будет выглядеть так:
1. Ноутбук ASUS VivoBook A540L - Ноутбуки - 15000.00 рублей - 10 штук 2. МФУ Kyocera Ecosys M2535fdn - МФУ - 22000.00 рублей - 5 штук 3. Сумка для ноутбука 15-дюймов, серая - Сумки и чехлы - 3500.00 рублей - 6 штук 4. Картридж Cactus CS-CE285A - Картриджи - 950.00 рублей - 15 штук 5. SSD диск GIGABYTE 2.5" 256 Гб SATA III NAND TLC (GP-GSTFS31256GTND) - SSD-диски - 3000.00 рублей - 18 штук 6. USB флешка 64Gb Kingston DTX/64Gb USB 3.2 Gen 1 (USB 3.0) - USB-диски, флешки - 750.00 рублей - 35 штук 7. USB флешка 128Gb Kingston DTX/128Gb USB 3.2 Gen 1 (USB 3.0) - USB-диски, флешки - 1300.00 рублей - 25 штук 8. Телевизор Samsung UE50TU8000UX, 4K Ultra HD, черный - Телевизоры - 46800.00 рублей - 3 штук 9. Кронштейн ONKRON M15, для LCD телевизора 32"-75", черный - Кронштейны - 4100.00 рублей - 8 штук 10. Телевизор LG 43LM5700PLA, черный - Телевизоры - 32000.00 рублей - 7 штук