多个数组foreach循环mysql

时间:2011-07-07 07:22:49

标签: php mysql

我有这个:

foreach($textnode as $key => $value) {

$value = stripslashes($value);
 $value = mysql_real_escape_string($value, $con);


 mysql_query("INSERT INTO paragraphs (textnodes, url)
 VALUES ('$value', '$url')");



}

我的表有三列(textnodes,ytext和url)

textnode和ytext都是数组.....我可以为两个数组做这个吗?

2 个答案:

答案 0 :(得分:1)

我认为你想要的是使用普通的for循环:

for($i=0;$i<sizeof($textnode);$i++){

    $textnode[$i] = stripslashes($textnode[$i]);
    $textnode[$i] = mysql_real_escape_string($textnode[$i], $con);

    $ytext[$i]    = stripslashes($ytext[$i]);
    $ytext[$i]    = mysql_real_escape_string($ytext[$i], $con);

     mysql_query("INSERT INTO paragraphs (paragraphs, ytext, url)
     VALUES ('$textnode[$i]', '$ytext[$i]', '$url')");

}

这样你就可以同时循环播放两者(不是100%肯定你问的是什么,但这是我最好的猜测)。


我没有测试过上面的代码,但它应该可行。然而,它遵循的风格和你上面显示的风格不是很好。以下是一些可以做出的改进:

  1. 不是对每个插入进行单独的查询,而是在一个查询中执行所有插入操作。这样做更好,因为只有1个查询的开销而不是$ i查询。

  2. 摘要DB。目前,您似乎正在将业务逻辑与数据库逻辑混合在一起。我可以看到这个,因为你正在逃避具有特定目的的文本字符串(textnode和ytext和url)并使用mysql查询插入它们。相反,抽象出查询以使业务逻辑不与db逻辑耦合是明智的。

  3. 较小的注释 - 您不必调用stripslashes。如果您使用魔术引号,请立即将其禁用,因为它已被弃用,现在被视为不良做法。

答案 1 :(得分:0)

你试过serialize吗? 它将您的数组转换为“可存储”形式(字符串)。当您再次从表中选择时,unserialize会将字符串转换回数组。

猜猜,你的问题有些不清楚......