我有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没有任何作用,只检查以便某些字符串的大小合适。 我不知道是什么问题。我测试了所有可能性,但都失败了...... 请帮忙。提前谢谢。