2016-06-14 45 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

添加到您的表中的列,上面寫着短信是否已發送,並添加一個'WHERE thisNewColumn = FALSE'或相似。 –

+0

你好。我該怎麼做呢?我在表格中有一個狀態欄,我該怎麼辦?請... @JonStirling –

回答

0

添加新的狀態的短信列。和sms_sent一樣,這個列的默認值是0,當sms發送成功時,將sms_sent的值0更改爲1。 然後sql查詢是: $ sql =「SELECT name,amount,trans_id,msisdn,time_paid FROM customer 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 name,amount,trans_id,msisdn,time_paid FROM customer WHERE notification = 0」;'then then after sending the短信我應該有'$ sq =「更新客戶SET通知= 1 WHERE通知= 0」;'對嗎?所以在插入一些其他數據後,通知集會還原爲0,以便我可以選擇? Kindly .. @ Kuldeep –

+0

@Bob Myles 不是這樣的 「$ sq =」UPDATE customer SET notification = 1 WHERE notification = 0「;」 每個短信發送和更新後的更新表,藉助該表的唯一標識(主鍵)。 – Kuldeep

+0

好的,就像我的情況一樣,主鍵是「id」....沒有好好的,好心的詳細說明 –

相關問題