こんにちは、StackoverflowコミュニティPHPとPDOで重複を防ぐために例外を作成する
私はすぐにPDOで作業を始めています。私は解決する方法がわからないという些細な質問があります。だから、もしあなたが私を助けることができるかどうか教えてください。
私は、メンバースペース内のユーザーアカウントからデータを更新するためのフォームを用意しています。このフォームには、「姓」、「名前」、「電子メール」の3つのフィールドがあります。
私はユーザー登録と既存の電子メールを希望しません。しかし、ユーザが自分の電子メールを更新したくなく、 "姓"と "名前"フィールドだけを変更したい場合、PHPコードはデータベース内のレコードを更新できるようにする必要があります。
私はフォームを処理する関数を作成しました。重複するレコードの挿入を防止することはできますが、問題があります。ユーザーが電子メールを更新したくない場合、この関数はデータベースにすでに等しい電子メールがあることを返します。実際、電子メールはすでに存在するので、ユーザーが電子メールを変更したくないときにレコードを更新できるように、この例外をコードに実装する方法を知りたいと思います。機能以下
:
function update_admin_profile() {
session_start();
if (isset($_SESSION['id']) AND isset($_SESSION['login'])) {
// get the session variables for another propouse.
$id = $_SESSION['id'];
$pseudo = $_SESSION['login'];
// p - It's the URL parameter. anti_sql_injection is a function to check the parameter.
$p = anti_sql_injection($_GET['p']);
if (isset($_POST['last_name']) AND isset($_POST['name']) AND isset($_POST['email'])) {
$bdd = connexion_bdd();
$query = $bdd->prepare('SELECT * FROM tbl__administrators WHERE email = :email');
$query->execute(array('email' => htmlspecialchars($_POST['email'])));
$count=$query->rowCount();
if ($count == 0) {
$update = $bdd->prepare('UPDATE tbl__administrators SET last_name = :last_name, name = :name, email = :email WHERE id = ' . $p);
$update->execute(array(
'last_name' => htmlspecialchars($_POST['last_name']),
'name' => htmlspecialchars($_POST['name']),
'email' => htmlspecialchars($_POST['email'])
));
//The profile was updated.
header('Location: notify.php?m=49');
} else {
//The e-mail already exists!
header('Location: notify.php?m=48');
}
} else {
//Please fill in all fields
header('Location: notify.php?m=41');
}
} else {
//You session is expired. You will be disconnected now. Please, perform the login again and repeat this operation.
header('Location: notify.php?m=7');
}
}
注:それは私が電子メールを変更した場合、機能が働くのです。
はあなたの助けのためにありがとうございました。
よろしくお願いいたします。
ありがとうございました。それは本当に簡単です。 – lfgoulart