php mysql select语句不重复

时间:2016-06-12 06:43:39

标签: php mysql

我正在开发一个应用程序,它应该从mysql数据库中获取数据以发送短信。我决定使用cron job service来运行一个php脚本来获取数据并在每5分钟后发送一次短信。

我的问题是我无法弄清楚设置select语句的方法是不选择之前选择的记录。仅选择自上次运行以来新鲜的数据并发送数据。 请说,任何人都请带领我......

  //fetches fresh records
$sql = "SELECT name,amount, trans_id, msisdn, time_paid FROM customer ";


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

      get the variables from array
    $name = $resultarr['name'];
    $amount = $resultarr['amount'];
    $transaction_id = $resultarr['trans_id'];
    $date = $resultarr['time_paid'];

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

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

     //passing them as service arguments
    $serviceArguments = array(
            "mobilenumber" => $mobilenumber,
            "message" => $message_sent
    );

      //webservice to send sms
    $client = new SoapClient("http://50.33.64.16:8080/smsengine/smsws?WSDL");

    $result = $client->process($serviceArguments);

    return $result;

1 个答案:

答案 0 :(得分:2)

一个可能的想法是将所有已处理的记录转储到表中(比如tbl2),下次当你要获取记录时,选择主表中不存在于表tbl2中的所有记录。

SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL