0

セッションに格納された配列を通過する foreach ループがあります。その値が存在するかどうかをテーブルでチェックしています。そうでない場合は、別のテーブルに挿入しています。これはうまくいきます。ただし、最初のテーブルで多くの重複があるため、2 番目のテーブルで多くの重複が発生しています。これが私のコードです:

$today = date("Y-m-d");
$getAreaCodes = $_SESSION['area_code'];

    // Start Foreach Loop.  For every area code in session, get it's area code from the zip_zip table

    foreach($getAreaCodes as $value) {

        mysql_select_db($database_localhost, $localhost);
        $query_getAC = sprintf("SELECT area_code FROM zip_zip WHERE area_code = $value", GetSQLValueString($colname_getAC, "text"));
        $getAC = mysql_query($query_getAC, $localhost) or die(mysql_error());
        $row_getAC = mysql_fetch_assoc($getAC);
        $totalRows_getAC = mysql_num_rows($getAC);

            // If it does NOT exist, insert it into zip_areacodes.
            if (empty($row_getAC)){
                $insertSQL = sprintf("INSERT INTO zip_areacodes (area_code, date, type) VALUES (%s, %s, %s)",
                    GetSQLValueString($value, "text"),
                    GetSQLValueString($today, "text"),
                    GetSQLValueString("bad", "text"));                          
                    $Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());
            }
    }

この挿入ステートメントで $value を複数回ではなく 1 回だけ挿入するにはどうすればよいですか?

4

2 に答える 2

0

データベースを単純に変更して Unique 制約を追加することはできませんか?

于 2013-11-08T13:00:52.353 に答える
0

データの整合性を維持するために一意の制約を追加できない場合は、挿入する値を探して zip_areacodes で選択を実行する必要があります。

ソーステーブルから重複を排除したい場合は、重複を排除してみてください... 次に、一意の制約キーを追加します。

間違っていても実行したい場合は、 try...catch ステートメントを使用して例外を発生させないようにしますが、これは非常に醜い解決策です。

于 2013-11-08T13:20:51.467 に答える