2016-06-14 6 views
0

以下のマイコードはdbからデータを選択し、変数を使用してSMSを送信する必要があります。私はスクリプトを実行するためにcronジョブを使用しています。問題は、cronが実行されるときに、すでに処理されたデータも選択されることです。誰かが私のデータを既に選択しているのを防ぐ方法を教えてください....PHP mysqlデータベースから同じデータを何度も繰り返して選択しないようにする

//should select the fresh or new data after the first run 
    $sql = "SELECT name, amount, trans_id, msisdn, time_paid FROM customer"; 


    $result1 = mysqli_query($conn, $sql); 
    $resultarr = mysqli_fetch_assoc($result1); // fetch data 


      $name = $resultarr['name']; 
      $amount = $resultarr['amount']; 
      $transaction_id = $resultarr['trans_id']; 
      $date = $resultarr['time_paid']; 

      //message template 
      $message = "Dear $name we have received $amount from you. MPESA transaction Id $transaction_id on $date."; 

     $mobilenumber = $resultarr['msisdn']; // get mobile number from array 
     $message_sent = $message; 

      $serviceArguments = array(
          "mobilenumber" => $mobilenumber, 
          "message" => $message_sent 
      ); 

      $client = new SoapClient("http://32.138.160.130:8080/smsengine/smsws?WSDL"); 
+6

SMSが送信されたかどうかと言うあなたのテーブルに列を追加し、 'WHERE thisNewColumn = false'のまたは類似を追加します。 –

+0

こんにちは。これはどうすればいいですか?私は自分のテーブルにステータスカラムを持っています、どうすればいいですか?親切に... @JonStirling –

答えて

0

ステータスの新しい列を追加します。 sms_sentと同様に、この列のデフォルト値は0であり、smsが正常に送信されたときは、sms_sentの値0を1に変更します。 ANd次にsqlクエリは $ sql = "SELECT名前、量、trans_id、msisdn、time_paid顧客WHERE sms_sent = 0 ";


//should select the fresh or new data after the first run 
    $sql = "SELECT id, name, amount, trans_id, msisdn, time_paid FROM customer"; 


    $result1 = mysqli_query($conn, $sql); 
    $resultarr = mysqli_fetch_assoc($result1); // fetch data 


      $name = $resultarr['name']; 
      $amount = $resultarr['amount']; 
      $transaction_id = $resultarr['trans_id']; 
      $date = $resultarr['time_paid']; 

      //message template 
      $message = "Dear $name we have received $amount from you. MPESA transaction Id $transaction_id on $date."; 

     $mobilenumber = $resultarr['msisdn']; // get mobile number from array 
     $message_sent = $message; 

      $serviceArguments = array(
          "mobilenumber" => $mobilenumber, 
          "message" => $message_sent 
      ); 

      $client = new SoapClient("http://32.138.160.130:8080/smsengine/smsws?WSDL"); 
$sq = "UPDATE customer SET notification = 1 WHERE id = $resultarr['id']"; 
+0

ありがとう。私のテーブルの '0'カラムに '通知'が設定されているとしましょう。 '$ sql = "SELECTの名前、量、trans_id、msisdn、time_paid顧客からの通知= 0"; " sms私は '$ sq =" UPDATE顧客SET通知= 1 WHERE通知= 0 "を持っている必要があります";他のデータが挿入された後、通知セットは0に戻って選択できるようになりますか?かわいい.. @Kuldeep –

+0

@Bob Myles そうではない "$ sq =" UPDATE顧客SET通知= 1 WHERE通知= 0 ";" すべてのSMSの送信と更新後に、そのテーブルの一意のID(プライマリキー)を使用してテーブルを更新します。 – Kuldeep

+0

私の場合のように、プライマリキーは "id"です....あなたをうまくやってくれません。親切に丁寧に –

関連する問題