Dupliqué possible: strong>
Bindvalue PHP PDO dans limite P>Je ne pouvais pas afficher les données lors de l'utilisation de limites et / ou de décalage dans la déclaration de préparation, mais je peux montrer "Lei Lei" si je n'utilise pas la limite et le décalage, le code a-t-il un problème? P>
xxx pré> Ceci a été modifié du code d'origine qui a fonctionné: p>
xxx pré> blockQuote>
3 Réponses :
EDIT: Correction
$statement = $conn->prepare("SELECT id,username FROM public2 WHERE username = :name LIMIT :limit OFFSET :offset"); $name = "Lei Lei"; $statement->bindValue(':name', $name); $statement->bindValue(':limit', (int) $start, PDO::PARAM_INT); $statement->bindValue(':offset', (int) $per_page, PDO::PARAM_INT); $statement->execute();
@ Proyb2 Essayez sans le décalage comme dans votre requête d'origine: Sélectionnez ID, nom d'utilisateur à partir de Public2 Où USERNAME =: Nom limite $ Démarrage, $ per_page code>
Je vois, alors comment puis-je ajouter la limite dans la déclaration de préparation?
J'ai trouvé la réponse! € déclaration-> Bindvalue (': STA1', (int) $ Démarrage, PDO :: PARAM_INT); travaille-t-il
Vous avez tort. Faire cela est contre l'idée des déclarations préparées
@Col totalement d'accord, n'a pas réalisé que la limite a été prise en charge
Les déclarations limites peuvent certainement faire partie d'une déclaration préparée, les valeurs doivent simplement être liées en tant qu'étais entiers.
Déteste Necro un thread ... Mais la version éditée lie les paramètres aux mauvais noms ... Compte tenu des paramètres de l'instruction SQL "... LIMITE: Compensation de la limite: Décalage" Vous devez être contraignant $ START à compenser et $ per_page à limiter
J'ai trouvé la réponse! fonctionne p> p>
Merci. Je me demandais pourquoi ma limite: le nombre ne fonctionnait pas. On dirait que c'était être lancé comme une chaîne.
$dbh->setAttribute( PDO::ATTR_EMULATE_PREPARES, false ); will let you bind variables without being bothered of them type
Pourquoi voudriez-vous même faire cela lors de l'ajout de PDO :: param_int après que l'appel fonctionne?
Cela vous permet également d'utiliser une liaison normale de la matrice plutôt que de faire de l'instruction $-> Bindvalue. +1
Toute raison que vous exécutez
$ Compteour-> Execute () code> deux fois? Et utilisez-vous l'instruction
$-> FETCH () CODE> ou
ÉMARGE-$-> FETCHALL () CODE> Après avoir exécuté pour récupérer les résultats?
Mettez à jour mon message, j'utilise $ déclaration-> Fetch ()