9
votes

Comment lier les paramètres de tableau dans le cadre YII?

J'ai ci-dessous le code: xxx

mais le résultat de la requête est incorrect. Comment lier des params pour un tel dans condition?


1 commentaires

La réponse de Uday Sawant est une bonne solution de contournement. Votre code ci-dessus entraînera réellement cette instruction SQL: Sélectionnez * à partir d'OBJ où ID dans ('1,2,3,4,5') . Notez que la valeur de $ entrées est une chaîne unique . C'est ce qui rend les résultats incorrects. Si vous devez vraiment utiliser Bindvalue , vous devrez construire le SQL des tableaux comme Ceci ici .


4 Réponses :


7
votes

Pour maintenant, utilisez-la comme ceci xxx

i ll essayer de revenir avec $ commande-> bindvalue ()


0 commentaires

1
votes

Utilisation de la méthode de Yii enchaînant sur CDBCommand pour construire votre requête (comme dans la réponse de Sawant de Uday) est généralement un bon choix. Si vous devez construire la requête par fragme n'est pas idéal, une bonne alternative consiste à aplatir votre réseau de paramètres afin de ne pas contourner la protection contre l'injection SQL, comme: xxx

dans cet exemple, SQL final et arguments sont les suivants: xxx

dans les projets où l'utilisation de SQL RAW est la norme préférée, la plus grande prestation est que vous pouvez regrouper cette fonction utilitaire et la réutiliser pour tout mettre en doute. C'est une honte Yii n'élargise pas automatiquement les arguments de la table de cette façon, mais vous pouvez également ajouter ce support à des projets qui utilisent directement PDO.


0 commentaires

6
votes

après avoir rencontré ce problème dans mes projets, j'ai mis en place le travail Yii suivant en utilisant CDBCriteria, qui est un peu hacky, mais donne la sécurité de la correspondance du nombre de paramètres.

lorsqu'il est appliqué à votre Exemple Mon code serait: xxx

update

Il existe un moyen beaucoup plus propre de le faire en yii: xxx

voir Docs


0 commentaires

0
votes

Il y a deux méthodes dans Yii:

  1. Bindvalue () Utilisé dans la question mentionnée
  2. bindvalues ​​($ param €) nécessite i.e $ paramsarray = tableau (': index' => $ valeur)

    J'utilise le code suivant qui fonctionne parfaitement pour moi: xxx


1 commentaires

La question concerne en parfait état dans Yii 1.1, votre réponse concerne Yii 2 et ne répond pas vraiment à la question.