Boucle Foreach avec plusieurs tableaux
C'est ce que je veux:
foreach($_POST['something'] as $something){
foreach($_POST['example'] as $example){
$query = mysql_query("INSERT INTO table (row, row2) VALUES ('{$something}','{$example}')");
}
}
$_POST['something']
et $_POST['example']
sont des tableaux à partir d'une entrée avec
name="something[]"
et name="example[]"
.
Le problème:
De cette façon, je vais envoyer les données deux fois à la base de données. J'ai donc besoin d'une solution où je peux boucle creux 2 tableaux sans seding les données deux fois.
MODIFIER
- Le tableau deux aura toujours la même taille
- Dans le mysql_query je vais avoir d'autres éléments, et pas seulement la ligne, row2, et ceux-ci seront statique sans tableau.
Je ne comprends pas comment vous envoyer des données deux fois. Pourriez-vous montrer quelques exemples de sortie si vous mettez un
echo
dans le foreach
?OriginalL'auteur Adam | 2010-08-03
Vous devez vous connecter pour publier un commentaire.
Voulez-vous dire quelque chose comme:
Je suis en train d'interpréter exactement ce que l'OP demande, en fonction de son commentaire sur l'envoi des données à la base de données deux fois. Je soupçonne que c'est ce qu'il veut dire, mais avoir de la difficulté à expliquer
Eh bien, cela fonctionne, mais j'ai une erreur:
Warning: Invalid argument supplied for foreach() in example.php on line 63
mais j'ai utilisé exactement la façon dont vous avez écrit.hey, c'était autre chose, j'ai lu de mauvais ligne 😀 lol merci beaucoup cela fonctionne exactement comme je le voulais 😉
Rappelez-vous juste de s'échapper de vos données avant de les insérer, comme d'autres l'ont suggéré
OriginalL'auteur Mark Baker
SOLUTION POUR de MULTIPLES Tableaux
ESSAYEZ -
1)
ou 2)
La première solution a fonctionné pour moi. Merci 🙂
OriginalL'auteur T.Todua
Votre solution ne semble pas pour envoyer les données deux fois. Sauf si les enregistrements avec les mêmes valeurs apparaissent comme une suite de l'émission de vos requêtes. Cela pourrait signifier que vous devez traiter vos données avant de construire vos requêtes.
Une solution pourrait être:
OriginalL'auteur Andreas
Je pense que le meilleur moyen serait que d'une seule boucle pour créer une requête. Cela devrait fonctionner même si votre tableaux ne sont pas de la même longueur:
Aussi plus sûr, car elle échappe à votre entrée. Ce serait encore plus facile en utilisant des paramètres avec PDO.
OriginalL'auteur Cfreak
Voici une autre méthode. Celui-ci utilise insertions étendues, devrait donc être plus efficace et plus rapide, et utilise mysql_real_escape_string pour des raisons de sécurité. Le comte de contrôle assurez-vous juste que les deux champs ont le même chef d'accusation, si pas alors je le prends c'est une mésaventure. Si ils sont autorisés à avoir un nombre différent de champs, vous pouvez simplement utiliser la la fonction isset() fonction à vérifier pour s'assurer qu'elles contiennent une valeur.
MODIFIER
C'est en supposant, bien sûr, que vous ne voulez pas "quelque chose" pour itérer sur tous les "exemple" de valeurs et d'être attribués à chacun. Si vous le voulez bien, c'est un peu de changement.
Ajouté un insert de tableau de test, si il n'y a pas d'éléments pas de mise à jour. Grâce Gumbo.
$insertArr
ne sont éléments.Oui, bon appel. Ajouté dans une instruction if.
Pourquoi ne pas simplement ajouter la condition
$cnt > 0
à$cnt == $cnt2
?🙂 Parce que sa été une longue matinée!
Hey, merci @permiso pour votre réponse, il semble bien cependant, comment dois-je mettre d'autres éléments dans la
mysql_query
autres quesomething
etexample
, je veux avant unid
trop. J'ai essayé quelque chose comme ça, mais elle ne fonctionne pas 😐$query = "INSERT INTO table (id, something, example) VALUES " ."({$id}, ". implode(", ", $insertArr). ")";
OriginalL'auteur Brad F Jacobs
Bien que vous avez déjà sélectionné une réponse, ne pas oublier ce morceau de script peut échouer si le POST valeurs ne sont pas des tableaux. Vous pouvez surmonter cela avec un petit morceau de code:
OriginalL'auteur Ast Derek
Boucle Foreach avec plusieurs tableaux:
OriginalL'auteur saravanan