php使用一个数据库工具运行多个查询

时间:2016-02-13 19:46:59

标签: php postgresql

我有php web应用程序,我使用PostgreSQL作为数据库。 我有一个方法需要对db进行多次查询。如下:

function recheck($id){
    $pgDB = new PostgreDB();
    $response = FALSE;
    $rows = $pgDB->selectRow('table', array('id'=>intval($id)));
    if (!count($rows)) {
        $response = 'Error';
    }
    foreach ($rows as $row) {
        $recheck = $this->gateUtil->recheck($row);
        if (!$recheck) {
            $pgDB->updateRow('table', array("stage"=>-1), array("id"=>intval($id)));
            $response = 'Did not confirmed.';
        } else {
            $updateRes = $pgDB->updateRow('table', array("stage"=>1), array("id"=>intval($id)));
            if ($updateRes) {
                $response = 'Request recheck confirmed!';
            } else {
                $response = 'Something went wrong!';
            }
        }
    }
    $pgDB->close();
    return $response;
}

updateRow方法:

function updateRow($table, $values, $where=NULL) {
        ini_set('display_errors', 1); 
        error_reporting(E_ALL);
        $qry = $this->buildQueryUpdate($table, $values, $where);
        $res = pg_query($this->handler, $qry);
        $ret = TRUE;
        if (!$res) $ret = FALSE;
//      pg_free_result($res);
        return $ret;
    }

selectRow方法:

function selectRow($table, $where=NULL, $columns=NULL, $order=NULL, $isAsc=TRUE, $limit=NULL, $offset=NULL) {
        $qry = $this->buildQuerySelect($table, $where, $columns, $order, $isAsc, $limit, $offset);
        $res = pg_query($this->handler, $qry);
        $ret = array();
        while ($row=pg_fetch_assoc($res)) {
            $ret[] = $row;
        }
//      pg_free_result($res);
        return $ret;
    }

它适用于selectRow方法,但在updateRow方法中,它返回以下警告和错误:

  

警告:pg_query():48不是有效的PostgreSQL链接    /var/www/html/lib/postgresql.class.php 上的资源在线    69

第69行是:

$res = pg_query($this->handler, $qry);

当我在此行之前和之后回显或print_r $ this->处理程序时,它都是

  

资源ID#48

您看不到的唯一代码是$ this-> gateUtil-> recheck($ row);并且recheck方法对db没有任何作用,只检查以便某些字符串的大小合适。 我不知道是什么问题。我测试了所有可能性,但都失败了...... 请帮忙。提前谢谢。

0 个答案:

没有答案