Comment fonctionne le mot-clé LIMIT avec les instructions préparées dans MySQL
Le mot-clé LIMIT dans MySQL est utilisé pour restreindre le nombre de lignes renvoyées par un SELECT déclaration. Il prend deux arguments entiers : un décalage et une limite.
Dans l'exemple suivant, la clause LIMIT est utilisée pour sélectionner les 10 premières lignes de la table de commentaires, classées par colonne de date par ordre décroissant :
SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT ?, ?
Pour exécuter cette requête à l'aide d'une instruction préparée par PDO, vous devez lier les trois paramètres de requête aux données appropriées. types :
$query = $db->prepare($sql); $query->bindParam(1, $post, PDO::PARAM_STR); $query->bindParam(2, $min, PDO::PARAM_INT); $query->bindParam(3, $max, PDO::PARAM_INT); $query->execute();
Cependant, si vous essayez d'exécuter cette requête avec les préparations émulées activées (le paramètre par défaut du pilote MySQL PDO), vous rencontrerez une erreur. En effet, le pilote MySQL convertira automatiquement les deuxième et troisième paramètres de requête en chaînes, ce qui entraînera l'échec de la clause LIMIT.
Pour résoudre ce problème, vous pouvez soit désactiver les préparations émulées, soit utiliser des espaces réservés positionnels au lieu de espaces réservés nommés dans votre requête.
Désactivation de l'émulation Prépare :
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
Utilisation d'espaces réservés de position :
SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT ? OFFSET ?
$query = $db->prepare($sql); $query->execute([$post, $min, $max]);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!