postgresql检查执行预准备语句时是否存在
问题描述:
我在准备一些语句,并希望在更新之前检查该行是否存在。如果存在,则更新它,如果它不存在,则输出消息“没有这种动物”。我有更新位工作,但不确定如何检查行是否存在。请协助。postgresql检查执行预准备语句时是否存在
$v = array();
$v[] = $_POST['status'];
$v[] = $_POST['id'];
$dbh = dbh_get();
$sql = 'UPDATE tap SET status=?
WHERE id =?';
$stmt = $dbh->prepare($sql);
$stmt->execute($v);
\\ if row isn't there display message "No such animal"
\\ otherwise print the below
printf("Status was changed to - %s", $v[0]);
\\then either way have my continue button for me to click on
print '<div class="button" style="float:left;" onclick="window.location.href=\'admin.php\';">Admin</div>' . "\n";
dbh_free($dbh)
答
根据你的问题,你想检查行是否存在之前执行更新。你可以试试这个 -
$id_exist = 0;
$sql = "SELECT id
FROM tap" ;
$sql_prepare = $dbh->prepare($sql);
$sql_prepare->execute();
while($row = $sql_prepare->fetchObject()) {
if($_POST['id'] == $row->id) {
$id_exist = 1;
}
}
if($id_exist == 1) {
// perform update here
} else {
echo 'No such animal';
}
nope,现在声明不起作用什么'尝试'? – Kilisi
我需要在声明的顶部对PDO做些什么,我想呢? – Kilisi
尝试用于检查一段代码是否有任何异常。如果语句抛出任何异常,则catch块可以捕获它。在你的情况下,如果更新语句未能更新,那么它应该进入catch块并打印“更新失败”以及异常。 –