Compte tenu du code suivant:
$userStatus = $myObj->userStatus; //Some Code HEre AND (myTable.field_1 IN ('" . implode("','", $userStatus) . "') OR myTable.field_2 IN ('" . implode("','", $userStatus) . "') OR myTable.field_3 IN ('" . implode("','", $userStatus) . "'))";
4 Réponses :
La deuxième façon est la voie à suivre. Beaucoup mieux à lire et si vous devez changer quelque chose, c'est plus facile à maintenir. p>
Je ne peux pas dire quelque chose en fait basé sur la performance, mais je pense que l'option 1) fonctionnera un peu plus vite mais aussi longtemps que vous ne travaillez pas sur des projets vraiment performants, la différence ne doit pas être importante. P>
En tant que Général em> pratique, je n'attribue pas une nouvelle variable à moins que je ne l'utilise réellement de manière à ce que cela le nécessite. Il y a bien sûr des exceptions à cela, où la lisibilité serait considérablement améliorée. Je ne pense pas que votre exemple rencontre ce seuil du tout. P>
En fait, je pense que votre exemple spécifique, attribuant ici une autre variable ici le rend potentiellement pas clair ce que Certainement, il n'y a rien de "moche" sur Dans tous les cas, il y a d'autres problèmes ici. Vous ne devez jamais concaténer des données directement dans une requête SQL. Il faut s'échapper au minimum, mais les paramètres contraignants sont meilleurs. Sinon, vous vous ouvrez à une multitude de bugs et de problèmes de sécurité. P>
Si vous avez utilisé des paramètres nommés, vous trouverez que vous n'utiliseriez que USERStatus code> est. C'est une autre chose de garder une trace de lors de l'écrémage du code. P>
$ myObj-> userstatus code>. p>
$ myObj-> userstatus code> une fois de toute façon. P>
Premièrement, vous pouvez précomputer le Deuxièmement, la chose la plus importante est que vous traitez de vos données dans le mauvais sens! Ce type de calcul doit être effectué dans votre base de données. Par exemple, vous avez converti la relation multicolore à une autre en une à plusieurs. Cela a rendu votre code moins lisible et moins efficace. P>
Troisième, ne pas trop ingénierir votre code. Si vous faites une opération, faites-la dans une variable pour être plus lisible plutôt que plus performante. La performance est implorer ("'', '", $ USStatus) code> dans une variable. De cette façon, vous n'avez pas à répéter la fonction d'imploration plusieurs fois. C'est à la fois plus lisible et a une meilleure performance. P>
Vous devez essayer le code suivant:
$userStatus = $myObj->userStatus; //Some Code HEre $userStatusimp = implode(',', $userStatus); AND (myTable.field_1 IN ('" .$userStatusimp. "') OR myTable.field_2 IN ('" .$userStatusimp . "') OR myTable.field_3 IN ('" .$userStatusimp. "'))";
Dry:
$ USStatus = implorez ("'', '", $ myObj-> userstatus); code>