Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 连接到postgres时出错(pg_关闭)_Php_Postgresql_Php Pgsql - Fatal编程技术网

Php 连接到postgres时出错(pg_关闭)

Php 连接到postgres时出错(pg_关闭),php,postgresql,php-pgsql,Php,Postgresql,Php Pgsql,我有以下代码: require 'dataload.php'; function get_objects($where,$name=false) { global $epsg, $cnt_array; $db = Dataload::getDB(); $columns="osm_id, ST_AsGeoJSON(ST_Transform(way,4326)) as way2, name, ward, \"healthcare:speciality\", in

我有以下代码:

  require 'dataload.php';
  function get_objects($where,$name=false) {

    global $epsg, $cnt_array;

    $db = Dataload::getDB();

    $columns="osm_id, ST_AsGeoJSON(ST_Transform(way,4326)) as way2, name, ward, \"healthcare:speciality\", information, description, social_facility, \"social_facility:for\", capacity, operator, official_name, official_status, phone, website, \"addr:full\", \"addr:city\", \"addr:district\", \"addr:postcode\", opening_hours, \"addr:hamlet\", \"addr:street\", fax, email, allhuman, adulthuman, childhuman, \"healthcare:heart\", \"healthcare:mind\", \"healthcare:maternity_light\", \"healthcare:maternity_hard\", \"healthcare:dtp\", \"ward:speciality_gynaecology\", \"ward:speciality_maternity\", \"ward:speciality_infectious_diseases\", \"ward:speciality_neurology\", \"ward:speciality_paediatrics\", \"ward:speciality_general\", \"ward:speciality_surgery\", \"internet_access:operator\", \"internet_access:speed\", \"wifi_access:ssid\"";
    $query="select ".$columns." from test_point where ".$where;

    $result = pg_query($query);
    if (!$result) {
        echo "Problem with query " . $query . "<br/>";
        echo pg_last_error();
        exit();
    }

    $geojson = array(
                     'type'      => 'FeatureCollection',
                     'features'  => array(),
                     'crs' => array(
                                    'type' => 'EPSG',
                                    'properties' => array('code' => '4326')
                     )
    );
    while($myrow = pg_fetch_assoc($result)) {

    $gos18_work = array();
    if($name=="gos18") {
        $query_gos18_work = "select * from gos18_work where obj=".$myrow["osm_id"];
        $result_gos18_work = pg_query($query_gos18_work);
        if (!$result_gos18_work) {
            echo "Problem with query " . $query_gos18_work . "<br/>";
            echo pg_last_error();
            exit();
        }
        while($myrow_gos18 = pg_fetch_assoc($result_gos18_work)) {
            $gos18_work[] = array(
                blah=>blah
            );
        }
    }

          $feature = array(
                           'type' => 'Feature',
                           'id' => $myrow["osm_id"],
                           'layer' => $epsg,
                           'geometry' => json_decode($myrow["way2"], true),
                           'geometry_name' => 'way',
                           'properties' => array(
                                                 'name' => $myrow["name"],
                      )
          );
          // Add feature array to feature collection array
          array_push($geojson['features'], $feature);

    }

    // Close database connection
    pg_close($db);

 }
 if(blah) ......get_objects($where);....
如果DB连接到localhost,但另一台服务器(复制没有DB的站点)返回错误,则此操作正常:

警告:pg_close()要求参数1为资源,布尔值 在my.php在线中给出


但是!如果注释
pg_close()
这项工作没有任何错误,并从数据库返回结果。

来自php手册的注释,用于pg_connect:

注意不要写像这样的东西

<?php
function getdb_FAILS() {
    return pg_connect("...") or die('connection failed');
}
?>

它将返回一个布尔值。如果您不这样做,这看起来很好 将返回值用作db连接句柄,但如果 做

相反,请使用:

<?php
function getdb() {
    $db = pg_connect("...") or die('connection failed');
    return $db;
}
?>

它实际上返回一个句柄


希望这有帮助。

为什么在pg\U close中使用显式连接参数,而在pg\U查询中不使用它?我想您的$db变量有问题。是的,$db变量不起作用。如果在pg_查询中使用$db,我也有错误。但是当localhost工作正常时。。。ббббббббббзбббббббб,phpзбзбб,phpб。获得物品,非常感谢!我的错,不明白。
<?php
function getdb() {
    $db = pg_connect("...") or die('connection failed');
    return $db;
}
?>