2013-01-02 4 views
0

J'utilise php avec mysqli pour un projet web.Utilisation de bind_parameters avec un nombre inconnu de paramètres

Nous supposons que nous devons trouver la chanson avec le titre "Elle est comme le vent".
Si nous étions sûr que l'utilisateur saisir les paroles de la chanson afin que nous pourrions le faire (pseudocode):

get input and apply explode() 
concat each word with % between them 
and execute query 

Avec cette entrée: « elle a le vent », qui sera transformé en " % she% the% wind% ", la chanson sera trouvée.
Mais quand l'entrée est comme ceci: "wind like" -> "% wind% like%", la chanson ne sera pas trouvée.

J'ai pensé à créer la chaîne de requête $ en ajoutant like %?% and autant de fois que la longueur du tableau de mots est. Ainsi, la chaîne de requête $ est prête.

Le problème apparaît avec l'argument $ bind de paramètres bind.
Encore une fois la chaîne de types de $ peut être concaténée par quelque chose comme ceci:

$types .= "s"; //again, the number of times as the length of the array. 

Mais les variables représentant les mots? S'il y a 2 mots l'appel de fonction sera quelque chose comme:

bind("ss", $word1, $word2) 

Combien de variables mot $ à utiliser?

Nous pourrions définir un nombre maximum de mots à rechercher, dans l'exemple 5, mais ici nous obtenons un autre problème. Quel serait le contenu des variables qui ne seront pas utilisées? Dans l'exemple, si l'entrée est de 2 mots, que contiendront les 3 dernières variables?

Répondre

1

Pour le nombre variable de paramètres de liaison, vous pouvez simplement les lier dans une boucle, une à la fois.

Cependant, dans votre cas, vous n'avez qu'une seule variable à lier. Donc, faites juste votre chaîne de recherche dans variable, puis liez-la à la requête.

+0

Je suis intéressé par le nombre variable de paramètres de liaison. Quelle est la variable que je dois lier? – Chris

+0

Qu'en est-il de l'utilisation de la fonction call_user_func_array? Mais j'ai besoin de l'ajuster à mon problème .. – Chris

Questions connexes