更新时出现pq_query错误

时间:2013-01-30 15:40:01

标签: php postgresql sql-update updates case-when

我是postresql的新手,我很惭愧地认识到我不确定如何正确执行更新。

每次我尝试pg_query($ update);它给了我:查询失败:错误:无法在只读事务中执行UPDATE。

在此更新之前,我执行了一个选择查询。

select语句从数据库中检索50000行。更具体地说,我试图在1000行上执行when / case更新。查询格式正确,我已对其进行了测试。

$sqlstr = "update abcd set country = CASE" ;
$temp = "";
while($myrow = pg_fetch_assoc($result)) {
    if ($cnt < 1000) {
        $country = exec('geoiplookup '.$myrow['ip']);
        $temp .= " WHEN id = ".$myrow['id']." then '".$country."'";
        $cnt++;
    }
    else {
        $sqlstr = $sqlstr.$temp." END ; ";
        pg_query($sqlstr);
        $temp = "";
    }
}

1 个答案:

答案 0 :(得分:1)

$sqlstr = "update abcd set country = CASE" ;
$temp = "";
while($myrow = pg_fetch_assoc($result)) 
{

    if ($cnt < 1000)
    {
        $country = exec('geoiplookup '.$myrow['ip']);
        $temp .= " WHEN id = ".$myrow['id']." then  '".$country."'"; 
        $cnt++;
    }
    else
    {
        $sqlstr =  $sqlstr.$temp." END ; ";
        pg_query($sqlstr);

        $temp = "";

    }
}