J'ai un tableau d'entiers, comment puis-je les utiliser dans une requête mysql (en php)?
J'ai un tableau complet de contenu aléatoire id article. J'ai besoin d'exécuter une requête mysql (id dans le tableau va dans la clause where), à l'aide de chaque ID dans le tableau, dans l'ordre où ils apparaissent dans le dit tableau. Comment puis-je faire?
Ce sera une requête de mise à JOUR, pour chaque individu, l'ID dans le tableau.
Vous devez vous connecter pour publier un commentaire.
Comme avec presque tous les "Comment dois-je faire SQL dans PHP" questions - Vous vraiment devez utiliser des requêtes préparées. Il n'est pas difficile:
Alternativement, vous pouvez le faire comme ceci:
Ajouter plus de paramètre espaces réservés pour les autres champs que vous en avez besoin.
Lequel choisir?
La première variante fonctionne avec un nombre variable de documents de manière itérative, en le frappant à la base de données à de multiples reprises. Ce qui est le plus utile pour la mise à JOUR et les opérations d'INSERTION.
La deuxième variante fonctionne avec un nombre variable de documents trop, mais il touche la base de données qu'une seule fois. C'est beaucoup plus efficace que l'approche itérative, évidemment, vous ne pouvez faire la même chose pour tous les enregistrements affectés. Ceci est particulièrement utile pour SÉLECTIONNER et SUPPRIMER des opérations, ou lorsque vous souhaitez mettre à JOUR plusieurs documents, avec les mêmes données.
Pourquoi les requêtes préparées?
execute()
, donc moins de besoin de données pour aller sur le fil lorsqu'il est utilisé à plusieurs reprises.En plus des boucles de l'exécution de la différence de temps entre l'utilisation d'une instruction préparée et l'envoi de la plaine SQL seront visibles.
'bindparams'
être'bind_param'
? Je pense que c'est ce jackkorbin a été accéder à. (après j'ai comparé la vôtre avec son lien) Merci de confirmer ce qui est correct. Merci.bind_param
. J'ai mis à jour mon code.s = string, i = integer, d = double, b = blob
partie? et les variables par référence? Cela ne semble pas terminée pour moi. Vous pouvez avoir induit en erreur 27 personnes (ou peut-être tout le monde est juste en utilisant le premier bloc de code)À l'aide de la "DANS" Clause de
Peut-être ce que vous êtes après
sinon, quel est le problème avec
Amen à Tomalak commentaire sur les déclarations.
Toutefois, si vous ne souhaitez pas utiliser mysqli, vous pouvez toujours utiliser intval() pour empêcher l'injection:
Vous pourriez faire quelque chose comme ce qui suit, cependant, vous devez être TRÈS prudent que le tableau ne contient que des entiers sinon, vous pourriez vous retrouver avec une injection SQL.
Vous ne voulez vraiment pas à faire plusieurs requêtes pour obtenir le contenu si vous pouvez l'aider. Quelque chose comme cela pourrait être ce que vous êtes après.