我有以下for循环,它们应该将值插入到mysql表中。有一个users数组,它循环遍历数组并计算统计数据,它应该将所有值插入到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();
}
}
}由于注释中的提示而得到解决:我无意中为列设置了键,因此由于重复而不能插入。
发布于 2014-02-25 20:32:35
首先,使用一个查询插入所有数据。在for循环中生成它,然后调用一次mysql查询。
只需在执行前回显生成的查询,并尝试使用某个sql客户端运行它,就可以检查生成的查询是否正常工作。
发布于 2014-02-25 20:40:03
尝尝这个,
$sql = "INSERT IGNORE into dat_net VALUES ('{$user1}','{$user2}','{$union}','{$intersect}','{$rate}')";但是,如果您在foreach循环中创建一个insert查询,然后在完成foreach循环后触发它一次,这将是很好的。
https://stackoverflow.com/questions/22014040
复制相似问题