Je veux éviter d'insérer des données existantes appelées nom d'utilisateur dans ma base de données, mes codes s'exécutent sans erreur, mais le problème est que les données que je saisis ont été insérées même si elle existait déjà dans ma base de données. S'il vous plaît dites-moi ce qui manque avec mon code.
if($_POST["controller"] == "add") {
// validations here
$result = query("SELECT * FROM tbl_employee WHERE surname ='$surname'");
if(empty($_POST["surname"]) && (query($result)>0) ) {
echo 'surname already taken'; die();
}
else {
$age = getAge($_POST["dobMonth"], $_POST["dobDay"], $_POST["dobYear"]);
$result = query("INSERT INTO tbl_employee (carid, surname, firstname, position, department, birthplace, sex, address, contact, codename, birthdate, age, dateAdded) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", $_POST["modelo"], $_POST["surname"], $_POST["firstname"], $_POST["position"], $_POST["department"], $_POST["birthplace"], $_POST["sex"], $_POST["address"], $_POST["contact"], $_POST["codename"], $_POST["dobYear"] . '-' . $_POST["dobMonth"] . '-' . $_POST["dobDay"], $age, date("Y-m-d"));
if($result === false) {
echo 'error in insert'; die();
}
else {
$row = query("SELECT LAST_INSERT_ID() AS employee_id");
$id = $row[0]["employee_id"];
redirect("employee.php?profile=" . $id); //redirect("employee.php?action=view_all");
}
}
}
3 Réponses :
Essayez ceci: J'espère que cela vous aidera.
if($result['surname']==$_POST["surname"]) {
echo 'surname already taken'; die();
}
else {
$age = getAge($_POST["dobMonth"], $_POST["dobDay"], $_POST["dobYear"]);
$result = query("INSERT INTO tbl_employee (carid, surname, firstname, position, department, birthplace, sex, address, contact, codename, birthdate, age, dateAdded) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", $_POST["modelo"], $_POST["surname"], $_POST["firstname"], $_POST["position"], $_POST["department"], $_POST["birthplace"], $_POST["sex"], $_POST["address"], $_POST["contact"], $_POST["codename"], $_POST["dobYear"] . '-' . $_POST["dobMonth"] . '-' . $_POST["dobDay"], $age, date("Y-m-d"));
if($result === false) {
echo 'error in insert'; die();
}
Merci Man, votre code est exécuté mais enregistré toujours les données existantes.
Supprimer la requête et utiliser non si (! vide ($ _ post ["nom de famille"]) && ($ résultat)> 0) {}
Vous devez simplement modifier votre code.Je espère que cela aidera votre problème. Le problème avec votre code est d'abord, il vérifiera si la valeur du nom de famille est vide ou non si vous envoyez la valeur du nom de famille, il rendra la condition fausse à cause de La condition "et" condition et votre déclaration d'autre exécutera
Merci pour vos codes, mais cela me donne une erreur appelée "Variable non définie: nom de famille"
Je vous en prie
Quelle est l'erreur?
Après avoir appuyé sur le bouton pour enregistrer, c'est indiqué "AVERTISSEMENT: PDO :: PREPARY (PREPARY () s'attend à ce que le paramètre 1 soit une chaîne"
Vous devrez peut-être vérifier s'il est
son non dans ma base de données, mais dans ma forme il est nécessaire
Ajouter ! b> si (! vide ($ _ POST ["Nom de famille"]) && (Résultat ($ (résultat)> 0)) { code>
Pourquoi
vide ($ _ post ["nom de famille"]) code> Nom de famille moyen déjà pris? Donc, si le formulaire est soumis avec une valeur du nom de famille -> Sûr Nom non pris-> Insérer toujours dans la base de données.Quelles valeurs vous avez dans
$ nom de famille code> et$ _ POST ["FirstName"] code>?Le meilleur cas est que vous devez définir
nom d'utilisateur code> comme clé unique dans la base de données. La requête ne sera pas exécutée en cas de duplication de la valeur.Il sera meilleur que la vérification manuelle.@catcon Il a été à l'origine ressembler à ceci, si (vide ($ _ post ["nom de famille"])) {ECHO 'ERROR'; mourir(); } else {Le code ci-dessus n'est que mon expérience.
@Navedramzan est-il d'accord de définir deux touches uniques dans une table?
@ N-JAY: Non, nous ne pouvons pas. Mais oui dans ce cas, nous devons définir la clé composite (combinaison de deux attributs / colonnes), puis nous pouvons en faire une clé unique.