2017-06-01 8 views
0

MySQLデータベースからレコードを削除するコードがありますが、レコードが存在しない場合でも成功メッセージが表示されます。レコードが存在しないのに自分のコードで動作するレコードが見つからない場合、メッセージを生成する方法を探しました。php/PDOにレコードが存在する場合は削除する

私のコードは次のとおりです。フレッド-II-へ

try { 
    $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 
    /*** echo a message saying we have connected ***/ 
    //echo 'Connected to database<br />'; 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sql = "DELETE FROM ukgh WHERE telephone = :telephone"; 
    $stmt = $dbh->prepare($sql); 
    $stmt->bindParam(':telephone', $telephone, PDO::PARAM_STR); 
    $stmt->execute(); 

    /*** close the database connection ***/ 
    $dbh = null; 
} 
catch(PDOException $e) { 
    echo $e->getMessage(); 
} 
// once processing is complete 
// show success message 
echo 'Success - The record for ' . $telephone . ' has been deleted.'; 
?> 

(注)と呼ば答えが正しいですが、私は尋ねた質問では専門用語が違っていました。私は、私が削除したレコードが確実に存在するかどうかを尋ねました。行が存在するかどうかを調べる方法を尋ねなかったし、既存のレコードを探しているときに既存の行について何も検索するつもりはなかっただろう。自分のような一部のエキスパートには、行はレコードと同じかもしれませんが、私のような啓蒙されていない人が、行というレコードを聞いたことはありません。レコードが存在しない場合は最高の願いは、TOG

+0

、それは成功ではないのはなぜ

try { $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); /* * * echo a message saying we have connected ** */ //echo 'Connected to database<br />'; $sql = "DELETE FROM ukgh WHERE telephone = :telephone"; $stmt = $dbh->prepare($sql); $stmt->bindParam(':telephone', $telephone, PDO::PARAM_STR); $stmt->execute(); $count = $stmt->rowCount();// check affected rows using rowCount if ($count > 0) { echo 'Success - The record for ' . $telephone . ' has been deleted.'; } else { echo "Your error message"; } } catch (PDOException $e) { echo $e->getMessage(); } 

読むことで、影響を受けた行の数を確認してみては?両方のケースで目標に達していません – Jens

+1

影響を受けた行を確認する必要があります:http://php.net/manual/de/pdostatement.rowcount.php – Jens

+0

TRY、それをTRYに置きます。 – RiggsFolly

答えて

関連する問題