0

我在连接数据库时遇到了这个问题。我正在尝试编写一个包含要在 Postgres 上运行的子查询的查询,使用 PDO。不幸的是,我得到一个“无效的参数号::传感器”

    $statement="select  di_timestamp, di_item_value
from data_item
where
fk_fc_id=(select fc_id 
        from field_column
        where 
        fc_description is like ':sensor'
        and
        fk_mds_id=( select mds_id 
                    from monitored_data_set
                    where fk_pa_id=(select pa_id 
                        from pilot_ambient 
                        where   
                        pa_ambient_name ilike ':room'
                        and 
                        fk_sp_id=(
                            select sp_id 
                            from School_Pilot 
                            where sp_description ilike '%:name%'
                            )
                        )
                    )
                )";
$query = $databaseConn->prepare($statement);

$query->execute(array(':sensor'=>'Room Temperature',':room'=>'rm1',':name' => 'school1'));

我认为我的问题是由于 :(item) 周围的 ' 字符的转义。我试过使用 \ 但这会产生语法错误。我认为有一个我不知道的约定让 PHP 成功替换字符串,然后它不会在 Postgres 中导致错误。

谢谢你看这个,詹姆斯

4

1 回答 1

2

尝试删除参数名称周围的单引号,如下所示:

从 =>':sensor'到 =>:sensor

在此链接中,您将找到解释。

于 2013-10-31T13:59:55.297 回答