Je suis nouveau à PHP mais normalement capable de résoudre la plupart des problèmes mais celui-ci m'a eu. J'essaie de créer un bulletin d'inscription (champ unique) avec un bouton de soumission unique. J'ai bien fonctionné, en envoyant un email et en insérant les données du formulaire dans ma table. Cependant, je souhaite ajouter une fonctionnalité pour envoyer un e-mail de confirmation à la personne qui s'inscrit. J'ai fait des recherches approfondies et je connais la méthode derrière cela, mais mon code n'entraîne pas de données dans ma deuxième table utilisée pour stocker les informations de confirmation.INSERT INTO ne fonctionne pas pour la 2ème table
J'ai 2 tables: Tableau 1 colonnes 'newsletter' nommés sont:
idmail,emailaddress,datetime,state
idmail
est réglé sur AUTO_INCREMENT
Tableau 2 nommée colonnes 'CONFIRM' sont:
idconfirm,emailaddress,confirmkey
Voici mon code (j'ai omis la partie email qui va après que tout fonctionne bien):
//connect to database
include('admin/connection.php');
$email = mysqli_real_escape_string($dbc, $_POST['email']);
//check if value exists in table
$result = mysqli_query($dbc, "SELECT emailaddress FROM newsletter WHERE emailaddress = '$email'");
if (mysqli_num_rows($result)==0) {
//Insert value into database
$query1 = mysqli_query($dbc, "INSERT INTO newsletter(emailaddress, datetime, state) VALUES('$email','$now','0')");
mysqli_query($dbc, $query1);
// Get ID of last record
$id = mysqli_insert_id($dbc);
//Create a random key
$hash = $email.date('mY');
$hash = md5($hash);
//Insert value into database
$query2 = mysqli_query($dbc, "INSERT INTO confrim(idconfirm, emailaddress, confirmkey) VALUES('$id','$email','$hash')");
mysqli_query($dbc, $query2);
Lorsque je soumets une adresse e-mail, la première table est remplie correctement.
L'objectif ici est d'obtenir l'ID automatique créé dans la première requête INSERT INTO dans une variable, puis de l'ajouter dans la deuxième colonne de tables nommée 'idconfim'.
J'ai essayé:
echo $id;
echo $email;
echo $hash;
et toutes les variables contiennent les informations correctes.
Quelqu'un a-t-il des idées? J'ai essayé de faire beaucoup de choses ici, mais j'ai fait des recherches et je ne sais pas où je me trompe.
Merci d'avance.
Tout d'abord: 'INSERT INTO confrim' ->' INSERT INTO confirm' – lubilis
Exécutez la requête directement sur phpmyadmin et consultez le message. –
Votre script risque d'être attaqué par [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Regardez ce qu'il est advenu de [ Little Bobby Tables] (http://bobby-tables.com/) Même [si vous échappez aux entrées, ce n'est pas sûr!] (Http://stackoverflow.com/questions/5741187/sql-injection-that-gets -around-mysql-real-escape-string) Utilisez [instructions paramétrables préparées] (http://php.net/manual/fr/mysqli.quickstart.prepared-statements.php) – RiggsFolly