|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Alexis Inscription : novembre 2010 Messages : 15 ![]() |
Bonjour, bon bon petite question du soir :)
Cet après midi j'ai effectué quelques test, pour voir l'utilité de PDO::PARAM_INT/PDO::PARAM_STR/PDO::PARAM_BOOL etc. Je me suis dit, "ah tient je vais essayer de faire passer une chaine de caractère tout en lui imposant un PDO::PARAM_INT", et au final, ça passe quand même. Alors j'aimerais savoir a quoi sert réellement cet attribut ? Car sans, ça reviens au même, mais je dois me tromper ? :o exemple d'utilisation : Code :
source : http://www.php.net/manual/fr/pdostatement.bindvalue.php |
||
|
|
00
|
|
|
#2 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
C'est au cas ou le sgdb le gère.
|
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Alexis Inscription : novembre 2010 Messages : 15 ![]() |
Merci pour ta réponse, mais peux tu m'en dire un peu plus ?
|
|
|
00
|
|
|
#4 | ||
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Ça a tout son sens pour des clauses comme LIMIT, par exemple (un bind en non int, déclenchera une erreur de syntaxe).
Et encore faudrait-il ne pas se baser sur une expérimentation sur des pilotes PDO mal-conçus ou "spécifiques". Exemple : celui de MySQL, qui considère avant tout le type de la variable PHP plutôt que la constante PDO::PARAM_* (bien qu'en réalité ce soit un peu plus complexe, car la base - pdo - peut d'abord assurer une partie du travail sur la base de la constante - conversion vers string notamment). Illustration : Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Alexis Inscription : novembre 2010 Messages : 15 ![]() |
Bonsoir et merci, tes exemples sont compréhensible mais ça ne me réponds pas trop à ma question.
Dans ce cas là : Code :
$select->bindValue('offset', intval($_GET['offset'])); Peux tu m'expliquer ceci ? |
|
|
00
|
|
|
#6 | ||
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Non, ça, ce serait bindé comme une string, quel que soit le SGBD. A cause de la valeur par défaut du troisième paramètre (PDO::PARAM_STR - cf doc). Et, comme je le disais, c'est l'extension pdo même qui ferait alors la conversion vers string.
1. Tout d'abord, pdo, du fait du type indiqué PDO::PARAM_STR effectuerait la conversion en string 2. Ensuite, passant après, le pilote (pdo_xxx) ne verra donc pas un type int mais string, pour la donnée, qu'il respectera Code C :
Justement, en théorie, ce n'est pas [le type de] la valeur PHP qui dicte le type SQL mais bien la constante PDO::PARAM_* indiquée en troisième paramètre. Après ça dépend du SGBD, de son API et de comment est codé le pilote. |
||
|
|
10
|
|
|
#7 |
|
Membre à l'essai
![]() Alexis Inscription : novembre 2010 Messages : 15 ![]() |
D'accords, je viens de faire un petit test, et dans mon gdbd la convertion ce fait toute seule apparemment, même qu'il y est un param_str.
Merci pour ces explications ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com