2

これは、動作するはずのコードですが、ifステートメントがないかのようです。

$payloadObj->データは呼び出しで提供され、識別に使用される一意の番号が含まれています

        $limit="";
        $order=" ORDER BY rmtID";
        $where=" WHERE udid = '".$data."'";
        $data=$payloadObj->data;
        $now = date("o-m-d H:i:s");
        $query00="SELECT DISTINCT udid FROM rmtCustomer".$where; 
        $result00 = mysql_query($query00)
            or die("Query failed -".$query00);
        //$items=mysql_num_rows($result00);
        if ($result00) {
            if (mysql_num_rows($result00) == 0) {
            //if(!$items){
                $query11="INSERT INTO rmtCustomer (rmtCustomerID, udid, date) VALUES ('', '".$data."', '".$now."')";
                $result11 = mysql_query($query11)
                    or die("Query failed -".$query11);  
                $query22="INSERT INTO rmtSales (rmtSalesID, udid, productCount, date) VALUES ('', '".$data."', '9', '".$now."')";
                $result22 = mysql_query($query22)
                    or die("Query failed -".$query22);  
            }
        }

        $query="SELECT rmtTitle as product FROM rmtData".$order.$limit;
        $result = mysql_query($query)
            or die("Query failed -".$query);        
        $rows=array();
        while($row = mysql_fetch_array($result, MYSQL_BOTH)) {
            $rows[] = $row;
        }

変数$limit、$ order、および$ whereを使用してクエリを終了します。これは、変数がいくつかあるため、簡単にできるためです。それらはチェックアウトされており、まったく問題ではありません。

望ましい効果は、最初のクエリを実行して、レコードが見つからない場合に新しい顧客をチェックすることです。これは新しい顧客です。次に、ifステートメントでクエリを実行して、顧客テーブルと販売テーブルに追加します。その後、残りのクエリを続行します。最初の結果にレコードがある場合、顧客が存在し、挿入クエリをスキップして、残りのクエリに直接移動したいと思います。

この例は、これまでにコメントアウトされた2行が私の最初の試みでしたが、同じ結果を得たいくつかの試みを示しています。

どんな援助もいただければ幸いです。

4

1 に答える 1

1

いくつかのこと:

  1. $ dataは、使用された後(3行目)に初期化されます(4行目)。これは逆ではありませんか?

  2. udidが主キーまたは一意のインデックスである場合は、挿入を実行するだけで「重複」エラーをキャッチできます。これにより、最初の「選択」クエリが不要になるため、パフォーマンスが向上します。注:これにより、自動インクリメントフィールドの場合、挿入が失敗した場合でも、次のudidが増加します。

  3. あなたは「声明はそこにない」と言います、そしてそれが何を意味するのか私にはよくわかりません。

于 2012-11-26T06:39:58.940 に答える