我有这个:
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 :(得分: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个查询的开销而不是$ i查询。
摘要DB。目前,您似乎正在将业务逻辑与数据库逻辑混合在一起。我可以看到这个,因为你正在逃避具有特定目的的文本字符串(textnode和ytext和url)并使用mysql查询插入它们。相反,抽象出查询以使业务逻辑不与db逻辑耦合是明智的。
较小的注释 - 您不必调用stripslashes。如果您使用魔术引号,请立即将其禁用,因为它已被弃用,现在被视为不良做法。
答案 1 :(得分:0)
你试过serialize吗?
它将您的数组转换为“可存储”形式(字符串)。当您再次从表中选择时,unserialize
会将字符串转换回数组。
猜猜,你的问题有些不清楚......