Qu'est-ce exactement bind_param() n'en mysqli?
Je suis compréhension des déclarations préparées à l'aide de PHP et mysqli. J'ai essayé de lire quelques tutoriels, manuel et celui-ci: Bind_Param en PHP, Mais. pas encore trouvé de satisfaisant anser.
Quelqu'un a écrit en réponse que:
When you prepare an SQL statement, you can insert a placeholder (?)
.
where a column value would go, then use bind_param() to safely
substitute that placeholder for the real column's value. This prevents
any possibility of an SQL injection
Je l'ai trouvé un peu de code dans des tutoriels comme ceci:
$stmt = $con->prepare("INSERT INTO user_accounts VALUES (?,?,?,?)");
$stmt->bind_param('xyz', $sample1, $sample2, $sample3, $sample4); //bind to the parameter
J'ai compris que nous écrivons '?' à la place de nos variables, de sorte que les valeurs réelles peuvent être donnés plus tard. et mysql préparer un plan pour l'exécution de la requête que les variables sont passés en paramètres.
Mais, dites-moi ce que cette ligne de code dit?
bind_param('xyz', $sample1, $sample2, $sample3, $sample4);
quatre variables sont donnés avec quelque chose de " xyz " comme paramètres... qu'est-Ce exactement faire le paramètre 'xyz' ici? Est-il nécessaire d'écrire et plus tard être utilisé? je n'ai pas trouver ailleurs.
Quelqu'un peut-il m'expliquer? plz help.
EDIT:
Je veux seulement répondre à cela. Si vous pouvez expliquer, alors plz help:
- bien, je n'ai même pas voté pour rien encore. mais la consultation dans le manuel d'aide. il vous montre ce que chaque argument signifie et représente. vous voulez toujours quelqu'un pour l'écrire ici comme une réponse? ici, dans son dans le manuel. i.imgur.com/WxGTcL8.png
- Conformément à ce manuel:
types
- une chaîne de caractères qui contient un ou plusieurs caractères qui spécifient le type de la lie des variables. Ce n'est pas clair ici? - Il est difficile de comprendre que "sssd' est types dans la première fois. N'est-ce pas?
- Pas si vous lisez la description de ce que Ghost pointu vous au plus tôt.
- Je pense que la question est trop vaste, comme vous l'avez écrit. J'ai édité, il se concentre plus sur votre problème.
Vous devez vous connecter pour publier un commentaire.
Je pense que vous comprenez le concept de paramètres de liaison, donc je n'irai pas dans les. Néanmoins, vous pouvez examiner cette pour plus d'informations de fond.
L'API mysqli pour les paramètres de liaison est sans doute pas très élégant. Il ressemble à ceci:
Cela signifie que le premier argument de cette fonction,
$types
, donne mysqli les informations que types vos paramètres sont/ce qu'il doit les traiter comme des. Suivants sont les paramètres individuels.La
$types
argument est une chaîne de caractères individuels, avec chaque caractère désignant un type. Il existe quatre types possibles:i
,d
,s
etb
, pour entier, double, chaîne et binaire. Donc si vous voulez lier deux entiers et une chaîne de caractères, dans cet ordre, le$type
paramètre doit êtreiis
. Vous suivez ensuite que par les valeurs réelles:xyz spécifie le type de données de la colonne. par exemple, si nous avons quatre colonnes et tous sont de type chaîne de caractères, nous écrire:
si une colonne est de la
integer
type, nous utilisonsi
au lieu des
. par exemple, si la troisième colonne estinteger
, nous écrire:de préciser que les première et deuxième colonnes sont de chaîne (
s
) et le troisième estinteger
(i
) et la quatrième est une chaîne (s
).pour le premier paramètre de la
bind_parameter
fonction, nous utilisonss
pour les types de chaînes,i
signifieinteger
,d
est pourdouble
type etb
est pourblob
.donc pour votre cas,
sssd
signifie que la quatrième colonne estdouble
et le reste sontstring
SELECT ? + ?
est parfaitement valide une requête, vous pouvez les préparer et de les lier, mais il n'a rien à voir avec les colonnes.column
est toujours valide (Remarquez que c'est une réponse pour un débutant)b
est synonyme de blob: variable correspondante est un blob et seront envoyés dans des paquets