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'; 
} 
+0

nope,现在声明不起作用什么'尝试'? – Kilisi

+0

我需要在声明的顶部对PDO做些什么,我想呢? – Kilisi

+1

尝试用于检查一段代码是否有任何异常。如果语句抛出任何异常,则catch块可以捕获它。在你的情况下,如果更新语句未能更新,那么它应该进入catch块并打印“更新失败”以及异常。 –