Partons du principe que $conn est l'objet qui représente ta connexion au serveur MySQL (donc tu as quelquepart une ligne du style : $conn = new mysqli($host, $usr, $pwd, $dbname);).
Laisse tomber le style procédurale (les fonctions mysqli_...) et utilise les méthodes de la classe mysqli (et autres classes associées) à la place, c'est moins verbeux. Évite les imbrications genre mysqli_fetch_array($conn->query($req)) et écrit quelques variables en plus: ça te permettra, armer du manuel PHP, de bien comprendre la nature des éléments que tu manipules.
Ne jamais introduire de variable directement dans une requête:
$req = "Select count(*) from confirmations where num_activite='$num_activite'";
C'est la porte ouverte aux injections SQL. (je propose d'ailleurs de désormais l'écrire en un seul mot: célaportouvertozinjexioneskuel). Tu dois passer par une requête préparée.
La partie qui consiste à compter les résultats éventuels avant d'obtenir le résultat proprement dit ne sert à rien. À la place balance directement la requête que tu souhaites, et regarde si tu as des résultats.
Ça donnerait:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| if ( $stmt = $conn->prepare('SELECT `date` FROM confirmations WHERE num_activite=?') ) {
$stmt->bind_param('i', $num_activite); // ou $stmt->bind_param('s', $num_activite); si c'est un bigint
$stmt->execute();
// On lie la variable $dateconfirmation au résultat de la requête
$stmt->bind_result($dateconfirmation);
// On récupère le résultat si disponible
if ( $stmt->fetch() ) {
$confirmation_message = 'Cette activité a été confirmée le ' . date_an_fr($dateconfirmation);
} /* else { $erreur_message = 'l\'activité n'a pas été confirmée.'; } */
$stmt->close();
} |
Partager