2017-01-05 5 views
1

jquery-ajaxは、データベースの更新要求を送信します。データベースが実際に更新されているかどうかをチェックする方法?

target.php:

$_POST = array_map('stripslashes', $_POST); 
extract($_POST); 

try { 
$stmt = $db->prepare('UPDATE members SET logged = :logged WHERE user = :user') ; 
$stmt->execute(array(
':logged' => 1, 
':user' => $user, 
)); 
echo ('WELCOME ' . $user . ' !'); 
} 
catch(PDOException $e) { 
echo $e->getMessage(); 
} 

これはどのような場合には動作しますが、場合、それが動作してはならない - 例えば - 指定されたユーザーデータベースに存在しません。

データベースが実際に更新されている場合、または少なくともユーザーが本当に存在する場合はエコーを取得できますか、エコーがない場合は別のエコーを取得するにはどうすればよいですか?

+0

'もしそうでない{// それは を働いを}($ stmt->()の実行)のみエラーを検出し、' – Hackerman

+0

@Hackerman { は、//それは なかったです}。行に一致しない問合せはエラーではありません。 – Barmar

+0

これは単なるコメントです:) – Hackerman

答えて

3

更新要求を行う前に、ユーザーが存在するかどうかを確認できます(SELECT * FROM members WHERE user =:user)。

ユーザーが存在するかどうかをチェックせずに実行する場合は、実際に変更されたレコードの数を確認するために$ stmt-> execute(...)の後に$ stmt-> rowCount()を使用します。また、関数$stmt->execute(...) returns true on success and false on failure

2

$stmt->rowCount()を使用して、更新された行があるかどうかを調べることができます。行が見つからない場合は0、それ以外の場合はゼロ以外になります。

if ($stmt->rowCount() == 0) { 
    echo "User $user not logged"; 
} 

しかし行が見つかった場合、これはまた0を返しますが、loggedの値がすでに割り当てしようとした新しい値であるため、変更するものは、ありませんでした。

関連する問題