Afficher un message d'erreur de saisie.
Bonjour,
J'ai bien un message dans mon code "ERREUR Requête invalide" mais il n'apparait pas lorsque suite à une erreur de saisie le retour est vide.
Merci de votre aide.
<p><?php
$mysqli = new mysqli("localhost", "bdd", "mdp", "");
if ($mysqli->connect_errno) {
die('<p>Connexion impossible : '.$mysqli->connect_error.'</p>');
}
$nom = $_POST['nom'];
$result = $mysqli->query("SELECT * FROM conca2 WHERE recherche LIKE '%$nom%' LIMIT 0, 3000") ;
if (!$result) {
die('<p>ERREUR Requête invalide : '.$mysqli->error.'</p>');
}
for ($i=0 ; $i < $result->num_rows ; $i++) {
$row = $result->fetch_assoc() ;
$recherche = $row['recherche'] ;
echo '<p>'.$recherche.'</p>'."\r\n" ;
}
$result->free() ;
$mysqli->close() ;
?>
Réponses apportées à cette discussion
Salut,
je vais faire le même conseil que sur le sujet précédent : faire afficher la requête à l'écran telle qu'elle sera envoyée au serveur MySQL.
Ça veut dire d'abord de mettre cette requête dans une variable, ensuite la faire afficher avec un var_dump, ensuite seulement la faire exécuter en mettant la variable au lieu de la requête.
Schématiquement :
$requete = "SELECT ... etc...";
var_dump($requete);
$result = $mysqli->query($requete);
Et ensuite revenir avec le résultat affiché afin qu'on détecte une erreur.
Conseil pratique : faire des concaténation propres entre chaînes de caractères et variables. Donc, au lieu de :
$requete = "SELECT * FROM conca2 WHERE recherche LIKE '%$nom%' LIMIT 0, 3000";
Il faudra préférer :
$requete = "SELECT * FROM conca2 WHERE recherche LIKE '%". $nom ."%' LIMIT 0, 3000";
Ça peut éviter bien des problèmes inattendus dans des circonstances non-anticipées.