通过php表单,我尝试从postgres中检索主键值,以便我可以更新表格。 一点点html:
<p>
Saisissez le numéro sga de l''opération
</p>
numéro sga :<input type="text" name="num_sga"><br>
<input type="submit" name="submit" value="rechercher">
和php结束我定义查询然后执行它并将结果存储在pg_fetch_result
。这是执行未通过的请求,因为当我用实际值替换$_POST[num_sga]
时,它可以正常工作。我不知道......
//la définition de la requete de maj à compléter
$sqlGid = "select gid from activite.emprise where numope =
'$_POST[num_sga]'" ;
//execution de la requete
$requete_gid = pg_query($sqlGid) ;
//recuperation du gid depuis le résultat donné par la requête ci-dessus.
$gid = pg_fetch_result($requete_gid, 0, 0) ;
$maj = "update public.metadonnees set (date_rapport, date_libe_terrain,
généalogie) =
('$_POST[date_rapport_maj]', '$_POST[date_libe_terr_maj]', '$_POST[genealogie_maj]')
where gid = $gid " ;
答案 0 :(得分:0)
您的查询包含一些PHP代码,sql无法理解。那么您的查询实际上在查找$_POST[num_sga]
字段中的字符串numope
...
您需要先用占位符准备一份声明:
// Prepare a query for execution
$result = pg_prepare($dbconn, "my_query", 'select gid from activite.emprise where numope = $1');
然后执行语句,将实际值传递给它:
// Execute the prepared query.
$result = pg_execute($dbconn, "my_query", array($_POST[num_sga]));
请注意,这种方式在很多方面比简单方法更好:
$sql = 'select gid from activite.emprise where numope = ' . $_POST[num_sga];
pg_query($sql);
// ...
为什么?这是因为:
pg_execute
多次查看the documentation和google,了解有关预备语句的更多信息。