Php mysql select语句在cron作业运行后仅拾取新插入的记录

Php mysql select语句在cron作业运行后仅拾取新插入的记录,php,mysql,cron,Php,Mysql,Cron,我只想选择并使用在Cron作业运行和下一次运行之间插入的新记录。从这个意义上讲,我不会重复我以前处理过的任何数据或记录 从下面的select语句中,请有人指导我,谢谢 // select statement should pick fresh records only after the first cron $sql = "SELECT name,amount, trans_id, msisdn, time_paid FROM customer"; $result1 = mysqli_quer

我只想选择并使用在Cron作业运行和下一次运行之间插入的新记录。从这个意义上讲,我不会重复我以前处理过的任何数据或记录

从下面的select语句中,请有人指导我,谢谢

// select statement should pick fresh records only after the first cron
$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'];
这是很重要的,因为数据将用于发送短信,我不想发送短信两次给某人


有人愿意吗?

如果您想获得新插入数据的详细信息,请在表中添加一个新列,如add\u date。选中此添加日期等于当前日期。如果是,您将获得每天新日期的详细信息。您可以使用下面的代码

$today = date("Y-m-d");
$check_new_data = mysql_query("SELECT name,amount, trans_id, msisdn, time_paid FROM 
customer WHERE add_date='$today'");

while($check = mysql_fetch_array($check_new_data))
{
            echo "What ever date you need";
}

如果要获取新插入数据的详细信息,请在表中添加一个新列,如add\u date。选中此添加日期等于当前日期。如果是,您将获得每天新日期的详细信息。您可以使用下面的代码

$today = date("Y-m-d");
$check_new_data = mysql_query("SELECT name,amount, trans_id, msisdn, time_paid FROM 
customer WHERE add_date='$today'");

while($check = mysql_fetch_array($check_new_data))
{
            echo "What ever date you need";
}

如果要确定只发送一次SMS,请在db表中设置一个标志,并在发送SMS后更新该标志

在数据库表中为标志添加字段:

ALTER TABLE `customer` ADD `smsSent` BOOLEAN NOT NULL AFTER `time_paid`;
仅选择未发送SMS的位置:

$sql = "SELECT name, amount, trans_id, msisdn, time_paid FROM customer WHERE smsSent = '0'";
您可能希望向SQL查询添加限制,以避免任何超时或SMS发送限制或限制要求

在记录上运行while循环

$result1 = mysqli_query($conn, $sql);
while ($resultarr = mysqli_fetch_assoc($result1)) {
    // send the SMS
    /* add your sms sending code here */
    // update the database record so the sms is not sent again in future (assumes primary key is id)
    $sql = "UPDATE customer SET smsSent = '1' WHERE id = '{$resultarr['id']}'";
    $res = mysqli_query($conn, $sql);
}

如果SMS无法发送,您可以扩展此功能以记录错误。

如果您想确定只发送一次SMS,请在db表中设置一个标志,并在发送SMS后更新该标志

在数据库表中为标志添加字段:

ALTER TABLE `customer` ADD `smsSent` BOOLEAN NOT NULL AFTER `time_paid`;
仅选择未发送SMS的位置:

$sql = "SELECT name, amount, trans_id, msisdn, time_paid FROM customer WHERE smsSent = '0'";
您可能希望向SQL查询添加限制,以避免任何超时或SMS发送限制或限制要求

在记录上运行while循环

$result1 = mysqli_query($conn, $sql);
while ($resultarr = mysqli_fetch_assoc($result1)) {
    // send the SMS
    /* add your sms sending code here */
    // update the database record so the sms is not sent again in future (assumes primary key is id)
    $sql = "UPDATE customer SET smsSent = '1' WHERE id = '{$resultarr['id']}'";
    $res = mysqli_query($conn, $sql);
}

如果SMS无法发送,您可以扩展此功能以记录错误。

假设表名称和列名可自行更改

    follow Vignesh Chinnaiyan steps and if you want dont sent message twice means create status table.

    id customer_id  insert_date           status 

     1    1        2016-06-13      sent
     2    2        2016-06-13      sent

     $check_new_data = mysql_query("SELECT name,amount, trans_id, msisdn, time_paid FROM 
     customer WHERE add_date='$today' and  customer_id NOT IN (select customer_id from status_table where insert_date='$today') ");

假设表名称和列名可自行更改

    follow Vignesh Chinnaiyan steps and if you want dont sent message twice means create status table.

    id customer_id  insert_date           status 

     1    1        2016-06-13      sent
     2    2        2016-06-13      sent

     $check_new_data = mysql_query("SELECT name,amount, trans_id, msisdn, time_paid FROM 
     customer WHERE add_date='$today' and  customer_id NOT IN (select customer_id from status_table where insert_date='$today') ");

在数据库中为已发送的SMS设置一个标志,这样cron将检索尚未发送SMS的行,发送SMS,然后更新数据库中的标志。请注意,我该怎么做@Tristan@BobMyles你有解决方案吗?现在才开始实施。意志update@BobMyles,这很酷。在数据库中为已发送的SMS设置一个标志,以便cron检索尚未发送SMS的行,发送SMS,然后更新数据库中的标志。请注意,我该怎么做@Tristan@BobMyles你有解决方案吗?现在才开始实施。意志update@BobMyles,这很酷。@BobMyles我也使用CRON作业检查新条目。这对我很有用。@BobMyles我也使用CRON作业检查新条目。这对我有用。