Je travaille actuellement à ré-écrire le CMS PwsPHP 1.2.3 pour remplacer les requêtes simple ( et sujet au SQL Injection ) par l'utilisation de paramètres bindé !
Tout ce passe trés bien, sauf pour un cas :
Dés qu'il y a un LIMIT avec paramètres bindé à la fin de la requête SQL.
Par exemple, pour ce code :
CODE
/* Crée une requête préparée */
if ( $stmt = $mysqli->prepare("SELECT id, titre, auteur, date FROM forum WHERE id = ? LIMIT ?, ?") )
{
/* Lecture des paramètres de marques */
$stmt->bind_param("iii", $id, $debut, $fin);
/* Exécution de la requête */
$stmt->execute();
/* Lecture des variables résultantes */
$stmt->bind_result( $id, $titre, $auteur, $date);
$stmt->fetch();
echo "Id : ".$id." Titre : ".$titre." Auteur : ".$auteur." Date : ".$date."<br />";
/* Fermeture du traitement */
$stmt->close();
} else {
echo "Erreur SQL : ".$mysqli->error."<br />";
}
if ( $stmt = $mysqli->prepare("SELECT id, titre, auteur, date FROM forum WHERE id = ? LIMIT ?, ?") )
{
/* Lecture des paramètres de marques */
$stmt->bind_param("iii", $id, $debut, $fin);
/* Exécution de la requête */
$stmt->execute();
/* Lecture des variables résultantes */
$stmt->bind_result( $id, $titre, $auteur, $date);
$stmt->fetch();
echo "Id : ".$id." Titre : ".$titre." Auteur : ".$auteur." Date : ".$date."<br />";
/* Fermeture du traitement */
$stmt->close();
} else {
echo "Erreur SQL : ".$mysqli->error."<br />";
}
Et l'erreur est :
CITATION
Erreur SQL : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? , ?' at line 3
Donc si je remplace par des valeurs en dur dans le LIMIT ca fonctionne.
Donc, comment ca se fait ??
Et comment résoudre ca ??
Merci par avance !!