2012-07-20 7 views
0

Je voudrais demander si mon code est correct.PHP foreach format avec 2 déclarations foreach

Je ces deux commandes exploser:

$url = 'http://google.com, http://yahoo.com, http://msn.com, http://yahoo.com, http://msn.com, http://yahoo.com, http://msn.com'; 
$key = 'google, yahoo, msn'; 
$xurl = explode(',', $url); 
$xkey = explode(',', $key); 

foreach ($xurl as $hyperlink) { 
    foreach ($xkey as $keyword) 
    $sqlHyperLink = mysql_query("INSERT INTO jon_hyperlink VALUE('', '$hyperlink', '$keyword', NOW())") or die (mysql_error()); 
} 
    echo 'Hyperlink Created'; 

MISE À JOUR * Si vous remarquez, la variable de $url de 7 a énuméré URL et j'ai 3 mots-clés. Comment puis-je faire le mot-clé à plusieurs reprises ...

Comment puis-je insérer la chaîne avec un foreach parce que j'ai utilisé 2 foreach pour ma requête et il l'a inséré 2 fois. Y a-t-il une meilleure manière de faire cela?

+1

autre que la fonction mysql_ * qui devrait être remplacée par PDO, cela me semble bon. – Gntem

Répondre

2

Vous pouvez faire:

$xurl = explode(',', $url); 
$xkey = explode(',', $key); 

$assoc = array_combine($xkey, $xurl); 

foreach ($assoc as $keyword => $hyperlink) { 
    //insert here 
} 
+0

Salut j'ai eu une erreur avec le code que vous avez dit 'Les deux paramètres doivent avoir un nombre égal d'éléments dans' – Butternut

+0

@ user1538668 Vous devez être sûr que les deux tableaux ont le même nombre d'éléments (dans votre exemple, il doit y avoir le même ',' dans les deux de vos chaînes) – Leri

+0

oui mais T_T im désolé je mets à jour le poste, je dois mettre 10 URL par exemple alors seulement 3 mot-clé, alors ces 3 mot-clé devrait être à plusieurs reprises pour ce 10url ... – Butternut

0

marteau des tableaux à l'aide d'un index.

$numItems = count($xurl); 
for ($i=0; $i<$numItems; $i++) { 
    $sqlHyperLink = mysql_query("INSERT INTO jon_hyperlink VALUE('', '{$xurl[$i]}', '{$xkey [$i]}', NOW())") or die (mysql_error()); 
} 

vérifier Idéalement sur PDO où vous pouvez lier les valeurs à une requête préparée - son plus rapide, plus sûr et plus pratique, cependant!

0
$url = 'http://google.com, http://yahoo.com, http://msn.com, http://yahoo.com, http://msn.com, http://yahoo.com, http://msn.com'; 
$key = 'google, yahoo, msn'; 
$xurl = explode(',', $url); 
$xkey = explode(',', $key); 

foreach ($xurl as $i => $keyword) { 
    $sqlHyperLink = mysql_query("INSERT INTO jon_hyperlink VALUE('', '{$xkey[$i]}', '$keyword', NOW())") or die (mysql_error()); 
} 
+0

il y a beaucoup d'erreur ... 'Argument invalide fourni pour foreach()' – Butternut

+0

est-ce mieux? – mattclegg

0

Si votre url $ et carte clé $ ensemble dans l'ordre correct, vous pouvez simplement utiliser une simple boucle avec un index et d'accéder aux deux tableaux pour chaque boucle.

for($i = 0; $i < sizeof($key); $i++) 
{ 
    mysql_query("insert ... $key[$i] .. $url[$i] .."); 
}