You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP7+PostgreSQL9.6使用pg_query_params报错:参数1应为资源却为null

解决pg_query_params()报错:parameter 1 to be resource, null given

别着急,这个报错的关键点你理解错了——它说的是第一个参数(数据库连接对象)是null,不是第二个参数(SQL语句)!

咱们来一步步拆解问题:

  1. 先看你的dbconn()函数:
    你在函数里成功创建了$conn连接对象,但从头到尾都没有把这个对象返回出去!PHP里函数如果没有明确写return,默认会返回null。所以当你执行$conn = dbconn();时,$conn其实是个null值,这才导致pg_query_params()报错说第一个参数需要resource类型,却收到了null。

  2. 修正方法很简单,给dbconn()函数加上返回语句:

function dbconn(){
    ini_set('display_errors', 1); //显示错误
    //读取配置参数
    $config = file_get_contents('../config.json');
    $json = json_decode($config, true);
    //数据库登录信息
    $host = $json['db_host'];
    $port = $json['db_port'];
    $dbname = $json['db_name'];
    $user = $json['db_user'];
    $password = $json['db_pwd'];
    //建立连接
    $conn = pg_connect("host=$host port=$port dbname=$dbname user=$user password=$password");
    if (!$conn) {
        echo "Not connected : " . pg_error();
        exit;
    }
    // 新增这一行,返回连接对象
    return $conn;
}
  1. 额外的注意事项:
    • 你提到的$FeatureCollection拼接SQL的问题确实有严重的SQL注入风险,后续修复的时候,记得把这部分也改成用参数绑定的方式,比如把整个JSON字符串作为参数传给pg_query_params(),不要直接拼进SQL里。
    • 调试的时候,可以在$conn = dbconn();之后加一行var_dump($conn);,确认连接对象是否正常生成,这样能快速排查连接类问题。

修正完dbconn()函数后,你的pg_query_params()调用应该就能正常工作了,因为现在$conn是有效的数据库连接resource了。

内容的提问来源于stack exchange,提问作者wfgeo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:52:27