我收到预备语句“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;
}
答案 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));
...
}
在你的情况下,使用一个多次使用准备和执行的函数,这是一个问题。
使用此函数尝试完成的任务是调用更多代码,例如调用函数的位置。这样我可以帮助你。
如果你想使用函数,我会使用这个方法
开始<?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函数,请尝试创建一个仅在会话中创建一次准备的函数。不要忘记给出不同的名称,以免发生相同的错误。我试图找到这种类型的东西,但没有找到。如果您发现此处提供的表单供其他人学习。如果在此期间我找到了一种表达方式。