Ce que j'essaie de faire, c'est INSERT
abonnés dans ma base de données, mais IF EXISTS
il devrait UPDATE
la ligne, ELSE INSERT INTO
une nouvelle ligne.
Bien sûr, je me connecte d'abord à la base de données et à GET
le $name
, $email
et $birthday
à partir de la chaîne d'URL.
$con=mysqli_connect("localhost","---","---","---");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$name=$_GET['name'];
$email=$_GET['email'];
$birthday=$_GET['birthday'];
Cela fonctionne, mais ajoute simplement la nouvelle ligne;
mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday)
VALUES ('$name', '$email', '$birthday')");
mysqli_close($con);
Voici ce que j'ai essayé
mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday)
VALUES '$name', '$email', '$birthday'
ON DUPLICATE KEY UPDATE subs_name = VALUES($name), subs_birthday = VALUES($birthday)");
mysqli_close($con);
et
mysqli_query($con,"IF EXISTS (SELECT * FROM subs WHERE subs_email='$email')
UPDATE subs SET subs_name='$name', subs_birthday='$birthday' WHERE subs_email='$email'
ELSE
INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES ('$name', '$email', '$birthday')");
mysqli_close($con);
et
mysqli_query($con,"IF NOT EXISTS(SELECT * FROM subs WHERE subs_email='$email')
Begin
INSERT INTO subs (subs_name, subs_email, subs_birthday)
VALUES ('$name', '$email', '$birthday')
End");
mysqli_close($con);
Mais aucun d'entre eux ne fonctionne, qu'est-ce que je fais mal?
Toute aide est grandement appréciée!
Créez une contrainte UNIQUE
sur votre colonne _subs_email
_, s'il n'en existe pas déjà une:
_ALTER TABLE subs ADD UNIQUE (subs_email)
_
Utilisez INSERT ... ON DUPLICATE KEY UPDATE
:
_INSERT INTO subs
(subs_name, subs_email, subs_birthday)
VALUES
(?, ?, ?)
ON DUPLICATE KEY UPDATE
subs_name = VALUES(subs_name),
subs_birthday = VALUES(subs_birthday)
_
Vous pouvez utiliser la fonction VALUES (nom_colonne) dans la clause UPDATE pour faire référence aux valeurs de colonne de la partie INSERT de la commande INSERT ... ON DUPLICATE KEY UPDATE - dev.mysql.com