Titre

Exécuter et afficher une requête SQL en PHP

Exécuter une requête SQL en PHP avec connexion à la base

Le code en version concise

Lien vers le fichier : cliquez ici

Code complet avec le code HTML de la page de base

Lien vers le fichier : cliquez ici

Si vous avez une erreur comme si-dessous, c'est que votre requête sql n'est pas bonne :

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ... on line xxx
 

Si vous devez envoyer une requête SQL contenant des données provenant d'un formulaire, au préalable passez vos variables dans la fonction mysql_real_escape_string

Exemple :

mysql_real_escape_string($MaVariableVenantDunFormulaire, $MaConnection);

 

stripslashes est l'équivalent désué de mysql_real_escape_string
Exemple :

$mavariablepourrequetesql = stripslashes($mavariablepourrequetesql); 


Autre problème : l'affichage du contenu d'un fichier non utf-8 passe mal.
Pour afficher correctement le contenu d'un fichier qui n'est pas codé en utf-8 mais en ANSI par exemple, il faut vérifier le codage.

Si le codage n'est pas en UTF-8, il faut le convertir.
Ci-dessous un exemple de convertion si la source n'est pas en UTF-8. La source est ici la variable $line :

if (mb_detect_encoding($line, 'UTF-8', true) === false) {$line = utf8_encode($line);}

 

La fonction htmlentities :
Dans un premier temps j'a cru qu'elle n'était pas nécessaire si j'avais ces pré-requis :

  • une base SQL en UTF-8
  • mysql_query("SET NAMES UTF8") placé après l'ouverture de la base
  • un fichier PHP en format utf-8
  • <meta charset="utf-8" /> spécifié dans le HEAD

Cependant, sur une page de prod, j'ai eu des problèmes pour afficher du code HTML qui s'est retrouvé interprété.
Comprenez que le contenu du champ value de balise input de cet exemple pose problème :

<input type="text" id="MonInput1" value="Cela ne fonctionne pas si j'affiche un guillemets type " vous comprennez ?" size=60 /><br />

 

En PHP, l'affichage de votre page peut être corrompu si vous affichez des variables contenant des guillemets simples ou doubles.

Dans l'exemple ci-dessous, si la variable $MaVariableaAfficher contient un guillemet, cela peut poser problème :

<?php

<input type="text" name="TxtAffichageDescription1" id="TxtAffichageDescription1" value=\"$MaVariableaAfficher" size=60 /><br />

?>

L'utilisation de la fonction htmlentities solutionne la question :

<?php

$MaVariableaAfficher = htmlentities($MaVariableaAfficher, ENT_QUOTES, "UTF-8");

<input type="text" name="TxtAffichageDescription1" id="TxtAffichageDescription1" value=\"$MaVariableaAfficher" size=60 /><br />

?>

 

A propos des guillemets, pour les traiter correctement avec htmlentities, il faut utiliser la fonction de cette façon :

htmlentities($MaVariable, ENT_QUOTES, "UTF-8");

 

La version simple ne fonctionne pas, cad :

htmlentities($MaVariable);

 

Pages Web

Site WebDescription
Mysql_connectAide sur la fonction mysql_connect en PHP.
php.netmysqli_fetch_array