我有以下for循环,它应该将值插入到mysql表中。有一个用户数组,它循环遍历数组和计算统计信息,它应该将所有值插入到mysql表中,但它只插入在users数组的第一个元素上完成的操作,而不是其余部分。它忽略了第一个for循环,只插入了第二个for循环,即使我可以看到循环正在做它们应该做的事情,它只是没有被插入到mysql中。
for($i=0; $i<count($users); $i++)
{
for($j=$i+1; $j<count($users); $j++)
{
$user1=$users[$i];
$user2=$users[$j];
$dat1=getData($user1);
$dat2=getData($user2);
$union=count(array_unique(array_merge($dat1, $dat2)));
$intersect=count(array_intersect($dat1, $dat2));
$rate=$intersect/$union;
$sql = "INSERT IGNORE into dat_net VALUES ($user1,$user2,$union,$intersect,$rate)";
$sqlresults = mysql_query($sql);
echo " ".$user1." ".$user2." \n";
if ($sqlresults === false) {
// An error has occured...
echo mysql_error();
}
}
}
由于评论中的提示而解决:我无意中为列设置了密钥,因此不会因重复而插入。
答案 0 :(得分:1)
首先使用一个查询插入所有数据。在for循环中生成它并调用一次mysql查询。
您可以在执行之前检查生成的查询是否仅通过回显来运行,并尝试使用某个sql客户端运行它。
答案 1 :(得分:0)
试试这个,
$sql = "INSERT IGNORE into dat_net VALUES ('{$user1}','{$user2}','{$union}','{$intersect}','{$rate}')";
但是如果你在foreach
循环中创建一个插入查询然后在完成foreach
循环后触发它就会很好。