通过PHP访问PostgreSQL数据库中的特定模式

时间:2013-04-19 16:41:54

标签: php database postgresql

我有一个带有5个模式的PostgreSQL数据库userdb

Schema 1- Persons
Schema 2- Project
Schema 3- Shop
Schema 4- Test

我可以使用pg_connect连接到数据库。如何访问该数据库中的特定架构?

当数据库中只有一个时,我能够连接到模式。但是现在因为我有多个模式,所以我很难访问任何特定模式。

 <?php
 // attempt a connection
 $dbh = pg_connect("host=**.****.*******.*** dbname=test user=merlin port=5433 password=passw123");
 if (!$dbh) {
     die("Error in connection test: " . pg_last_error());
 } 
// execute query
 $sql = "SELECT * FROM test.country";
 $result = pg_query($dbh, $sql);
 if (!$result) {
     die("Error in SQL query: " . pg_last_error());
 }       

 // iterate over result set
 // print each row
 while ($row = pg_fetch_array($result)) {
     echo "Country code: " . $row[0] . "<br />";
     echo "Country name: " . $row[1] . "<p />";
 }       

 // free memory
 pg_free_result($result);       

 // close connection
 pg_close($dbh);      
?>

3 个答案:

答案 0 :(得分:4)

使用架构名称

限定表格
select *
from my_schema.aircraft

答案 1 :(得分:2)

架构 - 将表名限定为已建议的@Clodoaldo。或者设置 search_path 以获得永久效果。它的工作方式与文件系统中的搜索路径非常相似。

永久性取决于您如何设置它。在此相关答案中查找选项的详细评估:
How does the search_path influence identifier resolution and the "current schema"

答案 2 :(得分:0)

使用:
SET search_path TO myschema;或

SET search_path TO myschema,myschemab;

https://www.postgresql.org/docs/9.4/static/ddl-schemas.html