Php postgresql错误,准备好的语句已经存在

时间:2017-04-07 13:33:54

标签: php postgresql

我收到预备语句“my_query7”的错误已经存在,每次用户尝试更新数据库中的表leader_info时,我都会调用此函数,我已经浏览了pg_prepare的文档,我不明白是什么意思它应该只运行一次。代码片段将有所帮助。感谢。

 function add_leader_country($user_id,$l_country)
 {
   global $connection;
   $query = pg_prepare($connection,"my_query7","update leader_info set l_country = $1 where user_id = $2 and status < 9"); 
$result = pg_execute($connection,"my_query7",array($l_country,$user_id));
if(!$result)
{
  echo pg_last_error($connection);
} 
else 
{
  echo "Records created successfully\n";
}
$row = pg_affected_rows($result);
return $row;



 }

1 个答案:

答案 0 :(得分:0)

准备执行不允许重复命名,这是您的错误。 一个查询应该只准备一次,例如,在一个循环中,准备状态必须设置为for并在for中执行。

 $result=$pg_prepare($connection,"my_query7",$query);
    for($id=1;$id<3;$id++){
      $result=pg_execute($connection,"my_query7",array($l_country,$user_id));
       ...
    }

在你的情况下,使用一个多次使用准备和执行的函数,这是一个问题。

使用此函数尝试完成的任务是调用更多代码,例如调用函数的位置。这样我可以帮助你。

如果你想使用函数,我会使用这个方法

https://secure.php.net

开始
<?php
function requestToDB($connection,$request){
    if(!$result=pg_query($connection,$request)){
        return False;
    }
    $combined=array();
    while ($row = pg_fetch_assoc($result)) {
        $combined[]=$row;
    }
    return $combined;
}
?>

<?php
$conn = pg_pconnect("dbname=mydatabase");

$results=requestToDB($connect,"select * from mytable");

//You can now access a "cell" of your table like this:
$rownumber=0;
$columname="mycolumn";

$mycell=$results[$rownumber][$columname];
var_dump($mycell); 

如果您想使用preaper和execute函数,请尝试创建一个仅在会话中创建一次准备的函数。不要忘记给出不同的名称,以免发生相同的错误。我试图找到这种类型的东西,但没有找到。如果您发现此处提供的表单供其他人学习。如果在此期间我找到了一种表达方式。