2

このコードの問題は何ですか。テーブルが空の場合、挿入関数に入ることができません。常に更新を行っています。誰かが私がこのことを解決するのを手伝ってくれる?

  while ($row = $result->fetch_object()) {

         if ($result->num_rows > 0) {

               $updatequery = sprintf("UPDATE stat_mailings SET cat_id='%s', mailing_name='%s', mailing_unique_id='%s', segment_id='%s', 
                                                                        campaign_id='%s', landing_page='%s', total_sent='%s' WHERE mailing_id='%s'",
                                        $row->category_id,
                                        mysqli_real_escape_string($mysqli, $row->mailing_naam),
                                        $row->unique_id,
                                        $row->mailing_segment,
                                        mysqli_real_escape_string($mysqli, $row->utm_campaign),
                                        mysqli_real_escape_string($mysqli, $row->landing_page),
                                        $row->mailing_total_sent, 
                                        $row->id                                           
                );

                 $mysqli->query($updatequery);
                 echo $error = $mysqli->error;   


        } else {

           $insertquery = sprintf("INSERT INTO stat_mailings SET mailing_id='%s', cat_id='%s', mailing_name='%s', mailing_unique_id='%s', segment_id='%s', 
                                                                        campaign_id='%s', landing_page='%s', total_sent='%s'",
                                        $row->id,
                                        $row->category_id,
                                        mysqli_real_escape_string($mysqli, $row->mailing_naam),
                                        $row->unique_id,
                                        $row->mailing_segment,
                                        mysqli_real_escape_string($mysqli, $row->utm_campaign),
                                        mysqli_real_escape_string($mysqli, $row->landing_page),
                                        $row->mailing_total_sent                                                                                       
                );

                 $mysqli->query($insertquery);
                 echo $error = $mysqli->error;      

        }
4

1 に答える 1

4

Mysql には、まさにこの目的のための優れた機能があります - ON DUPLICATE クエリです。
のように見えます

INSERT INTO t SET f1=val,f2=val2 ON DUPLICATE KEY UPDATE f1=val,f2=val2

等々。
キー フィールドに UNIQUE インデックスがあることだけを確認してください。
したがって、SELECT クエリを取り除くことができ、それは結果チェックです。

于 2013-02-11T11:11:25.993 に答える