2011-07-07 123 views
0

我有这样的:多个阵列foreach循环的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都阵列.....我可以做这对于两个数组?

+0

你是什么意思,对于两个数组? – Ikke

+0

我想知道如何将textnode数组和ytext数组中的值添加到它们各自的行中。 – re1man

回答

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. 摘掉数据库。目前,您似乎将业务逻辑与数据库逻辑混合在一起。我可以看到这一点,因为你正在逃避具有特定目的的文本字符串(textnode和ytext和url),并用mysql查询插入它们。相反,抽象查询以便业务逻辑不与db逻辑耦合是明智的做法。

  3. 一个较小的音符 - 你不应该调用stripslashes。如果您使用的是魔术引号,请立即禁用它,因为它已被弃用,现在被认为是不好的做法。

+0

由于您没有转义+连接变量,因此您的SQL查询无法工作。使它'VALUES(''。$ textnodes [$ i]。'',...' –

+0

@caffein:它可能不起作用,因为我没有测试它,但该部分应该没问题。 //www.php.net/manual/en/language.types.string.php#language.types.string.parsing – Cam

+0

不,工作原理双引号中的变量不需要转义 –

0

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

只是猜测,你的问题有点不清楚......