我正在try 运行以下PHP脚本来执行简单的数据库查询:

$db_host = "localhost";
$db_name = "showfinder";
$username = "user";
$password = "password";
$dbconn = pg_connect("host=$db_host dbname=$db_name user=$username password=$password")
    or die('Could not connect: ' . pg_last_error());

$query = 'SELECT * FROM sf_bands LIMIT 10';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

这会产生以下错误:

查询失败:错误:关系"sf_band"不存在

在我能找到的所有示例中,有人在声明关系不存在时出错,这是因为他们在表名中使用大写字母.我的表名没有大写字母.有没有一种方法可以在不包含数据库名称的情况下查询我的表,即showfinder.sf_bands

推荐答案

据我所知,这个错误意味着没有正确引用表名.一个常见的原因是,该表是用大小写混合拼写定义的,您试图用所有小写字母查询它.

换句话说,以下操作失败:

CREATE TABLE "SF_Bands" ( ... );

SELECT * FROM sf_bands;  -- ERROR!

使用双引号分隔标识符,以便在定义表时可以使用特定的大小写混合拼写.

SELECT * FROM "SF_Bands";

在您的 comments 中,您可以向"搜索路径"添加一个模式,这样当您引用一个表名而不限定其模式时,查询将通过按顺序判断每个模式来匹配该表名.就像shell中的PATH或PHP中的include_path一样,您可以判断当前的模式搜索路径:

SHOW search_path
  "$user",public

您可以更改架构搜索路径:

SET search_path TO showfinder,public;

另见第http://www.postgresql.org/docs/8.3/static/ddl-schemas.html

Php相关问答推荐

try 修改这个PHP代码如果语句在WordPress""

Laveel Livewire Get Groupby姓名列表

在WordPress中从CPT中删除插件

从两个日期创建日期范围,然后为范围中的每个日期复制子数组

在WP工具中页面加载时可短暂看到的JavaScript生成的字段

fpm-php + nginx + POST数据

从 WooCommerce 购物车中删除总计部分,同时保留小计行

在 PHP MySQL 中自动生成账单编号

Woocommerce的数量和价格条件

如何在WooCommerce中为访客购买者分配自定义客户代码

PHP:如何将多列sql查询结果转换成数组

htaccess php 文件,然后是文件夹

如果有很多重定向,PHP curl 的行为不像命令行 curl

我试图在我的视图上显示从数据库中获取的数据,但我无法显示它.拉维尔 10.x /

判断类别是否存在 Shopware 6

正则表达式 (php) 匹配单个 [ 或单个 ] 但忽略 [[ ]] 之间的任何内容?

适当的时区处理 Laravel / Carbon

PHP 自动函数参数和变量

基于其他数组创建多维数组 struct

多排序子数组 - 包含范围数据的子数组