跳过foreach mysql中的重复条目

时间:2013-02-01 05:17:03

标签: php mysql foreach duplicate-data skip

朋友们,我需要跳过 foreach 中的重复的条目,而继续的其他条目请告诉我们我怎么能这样做

foreach($arr as $key=>$arr1)
{
    echo "<pre>";

$insert=mysql_query("INSERT INTO auth_user(id,username,first_name,last_name,email,password,is_active,date_joined) VALUES('".$key."','".$arr1['username']."','".$arr1['firstname']."','".$arr1['lastname']."','".$arr1['email']."','NULL','".$arr1['is_active']."','".$arr1['date_joined']."')",$conn1);

echo $insert .'<br/>';
if($insert)
    {
        echo "DATA MIGRATE FOR USER ".$key;
        $insert1=mysql_query("INSERT INTO stylequiz_score(user_id,style_quiz_score,style_quiz_answer) VALUES('".$key."','".$arr1['style_quiz_score']."','".$arr1['style_quiz_answer']."')",$conn1);
    }
    else
    {
       echo  ("Error In MIGRATION FOR USER ".$key . mysql_error());

    }
}

3 个答案:

答案 0 :(得分:2)

使用INSERT语句的IGNORE修饰符:

$insert1=mysql_query("INSERT IGNORE INTO stylequiz_score(user_id,style_quiz_score,style_quiz_answer) VALUES('".$key."','".$arr1['style_quiz_score']."','".$arr1['style_quiz_answer']."')",$conn1);

如果插入的行会出现重复键错误,则此修饰符会导致跳过插入而没有错误。

答案 1 :(得分:1)

array_unique将删除数组中的所有重复值。在你的情况下,试试这样。

$arr = array_unique($arr);

您无需执行任何额外功能。

答案 2 :(得分:0)

假设您在$arr

中有重复值

使用array_unique

$res_array = array_unique($arr);

参考:http://php.net/manual/en/function.array-unique.php

要检查数据库中的重复项,请将插入查询置于if condition

$sql   = mysql_query("SELECT * FROM auth_user WHERE email = '".$arr1['email']."'");
if(mysql_numrows($sql) == 0){
   $insert=mysql_query("INSERT INTO auth_user(id,username,first_name,last_name,email,password,is_active,date_joined) VALUES('".$key."','".$arr1['username']."','".$arr1['firstname']."','".$arr1['lastname']."','".$arr1['email']."','NULL','".$arr1['is_active']."','".$arr1['date_joined']."')",$conn1);
}
else{
   $insert = false;
}