Dans un projet que je suis sur le point de terminer, j'ai écrit et implémenté une solution de mapping objet-relationnel pour PHP. Avant que les sceptiques et les rêveurs crient «comment diable?», Détendez-vous - je n'ai pas trouvé un moyen de faire du travail de liaison statique en retard - je suis juste en train de contourner le problème de la meilleure façon possible.PHP + MYSQLI: Liaison de paramètre/résultat variable avec les instructions préparées
De toute façon, je n'utilise pas actuellement d'instructions préparées pour interroger, car je ne pouvais pas trouver un moyen de passer un nombre variable d'arguments aux méthodes bind_params()
ou bind_result()
. Pourquoi ai-je besoin de prendre en charge un nombre variable d'arguments, demandez-vous? Parce que la superclasse de mes modèles (pensez à ma solution en tant que wannabe PHP ActiveRecord piraté) est l'endroit où l'interrogation est définie, et donc la méthode find(), par exemple, ne sait pas combien de paramètres il faudrait lier . Maintenant, j'ai déjà pensé à construire une liste d'arguments et à passer une chaîne à eval(), mais je n'aime pas beaucoup cette solution - je préfère simplement implémenter mes propres contrôles de sécurité et les transmettre déclarations.
Est-ce que quelqu'un a des suggestions (ou des histoires de réussite) sur la façon d'y arriver? Si vous pouvez m'aider à résoudre ce premier problème, nous pourrons peut-être nous attaquer au jeu de résultats (quelque chose que je soupçonne sera plus difficile, ou du moins plus gourmand en ressources s'il implique une requête initiale pour déterminer la structure du tableau).
Je pense que le nom de la fonction doit être 'bind_param' au lieu de' bindparams'. Au moins avec ma version 'mysqli' je l'utilise en tapant' $ stmt-> bind_param() ', pas' $ stmt-> bindparams() '. À votre santé! –