Php mysql select语句在cron作业运行后仅拾取新插入的记录
我只想选择并使用在Cron作业运行和下一次运行之间插入的新记录。从这个意义上讲,我不会重复我以前处理过的任何数据或记录 从下面的select语句中,请有人指导我,谢谢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
// 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作业检查新条目。这对我有用。