for循环中的mysql查询不插入所有值

时间:2014-02-25 12:19:57

标签: php mysql

我有以下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();
}


    }

}

由于评论中的提示而解决:我无意中为列设置了密钥,因此不会因重复而插入。

2 个答案:

答案 0 :(得分:1)

首先使用一个查询插入所有数据。在for循环中生成它并调用一次mysql查询。

您可以在执行之前检查生成的查询是否仅通过回显来运行,并尝试使用某个sql客户端运行它。

答案 1 :(得分:0)

试试这个,

$sql = "INSERT IGNORE into dat_net VALUES ('{$user1}','{$user2}','{$union}','{$intersect}','{$rate}')";

但是如果你在foreach循环中创建一个插入查询然后在完成foreach循环后触发它就会很好。