0

厄介な状況で少し助けが必要です。

現在、私はこのような配列を持っています

Array
(
[0] => Array
    (
        [Task_ID] => 59
        [email] => m@m.com
    )

[1] => Array
    (
        [Task_ID] => 59
        [email] => m@m.com
    )

[2] => Array
    (
        [Task_ID] => 59
        [email] => z@z.com
    )

[3] => Array
    (
        [Task_ID] => 60
        [email] => m@m.com
    )

[4] => Array
    (
        [Task_ID] => 60
        [email] => z@z.com
    )

[5] => Array
    (
        [Task_ID] => 61
        [email] => z@z.com
    )

)

これが私の現在の挿入ステートメントです。

        if(is_array($myArr)){
        $valuesArr = array();
        foreach($myArr as $row){

            $sql = "INSERT INTO user_data (Task_ID, email, url) values ";
            $TaskID = (int) $row['Task_ID'];
            $email = mysql_real_escape_string( $row['email'] );

            $valuesArr[] = "('$TaskID', '$email')";
            $sql .= "('$TaskID', '$email')";
            mysql_query($sql) or exit(mysql_error());
        }
    }

私がやりたいのは、URL 値である配列にない新しい値を挿入することです。

URL については、一意の電子メールごとに番号を増やしたいと思います。同じ電子メールは同じ URL 値を取得します。

SQL 構文がどのように見えるべきかの例。

INSERT INTO user_data (TaskID, email, url) values ('60', 'm@m.com','1')
INSERT INTO user_data (TaskID, email, url) values ('80', 'm@m.com','1')
INSERT INTO user_data (TaskID, email, url) values ('82', 'z@z.com','2')
INSERT INTO user_data (TaskID, email, url) values ('62', 'z@z.com','2')
INSERT INTO user_data (TaskID, email, url) values ('42', 'z@z.com','2')
INSERT INTO user_data (TaskID, email, url) values ('61', 'a@a.com','3')
INSERT INTO user_data (TaskID, email, url) values ('81', 'a@a.com','3')
INSERT INTO user_data (TaskID, email, url) values ('92', 't@t.com','4')
INSERT INTO user_data (TaskID, email, url) values ('32', 't@t.com','4')
INSERT INTO user_data (TaskID, email, url) values ('72', 't@t.com','4')

メールが変更されるたびに、URL が 1 つずつ増加していることに注意してください。TaskID は PK ではなく、メールは順番どおりではないことに注意してください。

お読みいただき、誠にありがとうございます。

4

1 に答える 1

1

試してみる

if (is_array($myArr)) {
    $valuesArr = array();
    $addedEmails = array();

    $cnt = 0;
    foreach($myArr as $row){

        $sql = "INSERT INTO user_data (Task_ID, email, url) values ";
        $TaskID = (int) $row['Task_ID'];
        $email = mysql_real_escape_string( $row['email'] );

        if (!in_array($email, $addedEmails)) {
            $cnt++;
            $addedEmails[] = $email;
        }

        $valuesArr[] = "('$TaskID', '$email', '$cnt')";
        $sql .= "('$TaskID', '$email', '$cnt')";
        mysql_query($sql) or exit(mysql_error());
    }
}
于 2013-03-05T20:14:27.587 に答える