【发布时间】:2014-03-10 09:40:10
【问题描述】:
我在任何意义上都是编码新手,所以请多多包涵。
我创建了一个与我的 PHP 应用程序通信的 Perl 脚本,但在将它们与 MySQL 查询同步的最后一个障碍上遇到了困难。我希望 Perl 脚本读取我数据库中的表 Syncorderrelation,并且只自动响应一次,通过在我的“传出表”上发布“自动响应”来发送一条短信)到任何符合以下条件的新条目:
updatetype为 1 的条目,这意味着新条目是订阅产品的新个人。Perl 脚本读取
DEST_MSISDN的新条目,这是同一个Syncorderrelation表上的一个字段(只是一个电话号码)并通过自动响应回复该号码(只是一条欢迎消息)。这是通过仅在“传出表”上发布“自动响应”来完成的,我的 PHP 应用程序会接管并自行发送响应。
所以我的问题是:如何创建一个查询,以便 Perl 脚本从当前时间开始仅自动回复 Syncorderrelation 表中的新条目。目前,还有数百个我不想触发响应的其他条目。
但是只回复新的DEST_MSISDN(电话号码)并且只回复这个电话号码并且只回复一次,因此不会一次又一次地向同一个号码重新发送相同的欢迎消息。
注意:脚本可以知道它是一个新条目的唯一方法是通过ID 字段。这是一个独特的字段,每次新条目进入Syncorderrelation 表时都会自动生成(现在该表的数量将从当前的“440”增加到“441”)。
我创建的脚本将Syncoderrelation 表中的所有必需字段正确发布到Outgoing 表中,但我无法从Syncorderrelation 表中读取新的Dest_Msisdn(电话号码)并将电话号码发布到Outgoing 表。没有它,PHP 应用程序将不知道将欢迎消息发送到哪里。
use strict;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use XML::Simple;
use Digest::MD5 qw(md5_hex);
use Time::Piece;
use DBI;
use Time::HiRes qw(usleep nanosleep);
my $dest_msisdn = '';
my $link_id = '';
my $ID = '';
my $subscription_auto_reply = '';
my $user = '';
my $send_time = '';
my $now = '';
my $correlator = '2345';
my $sender_name = '30045';
my $source = '30045';
my $text_message = 'Dear Customer Welcome to our service';
my $ua = new LWP::UserAgent(keep_alive => 1);
#get all the configs
#get sms to be sent
#set the connection
my $dbh = DBI->connect('DBI:mysql:Database404', 'Kapo', 'XXXXXXXXX') || die "Could not connect to database: $DBI::errstr";
my $j = 0;
while ($j < 1) {
print "AutoResponse....\n";
my $sql = "SELECT * FROM syncorderrelation WHERE updatetype = '1'";
my $results = $dbh->selectall_hashref($sql, 'id');
foreach my $id (keys %$results) {
print "AutoResponder!!!.....\n";
#get all the required columns
#get all the required columns
my $textMessage = $results->{$id}->{text_message}; #$results->{$id}->{dest_msisdn};
my $correlator = $results->{$id}->{id};
my $senderName = $results->{$id}->{sender_name};
my $linkID = $results->{$id}->{link_id};
my $textID = $results->{$id}->{id};
my $client = $results->{$id}->{client};
my $productId = $results->{$id}->{product_id};
my $dest_msisdn = $results->{$id}->{dest_msisdn};
my $text_message = $results->{$id}->{text_message};
my $autoReply = $results->{$id}->{autoreply};
#####send service
my $user = 5;
my $send_time = time;
my $now = time;
#catch error
my $sql1 = "INSERT INTO outgoing_sms(dest_msisdn, text_message, sender_name, link_id, correlator, send_time, client, user_id, timestamp) VALUES ('$dest_msisdn', 'Dear Customer Welcome to our service', '$sender_name', '$link_id', '1161', '$now', '1', '$user', '$now')";
$dbh->do($sql1);
#print $sql1;
###send
print $sql1;
#remove from outgoing table
my $sql2 = "UPDATE incoming_sms SET sent_flag = 1 WHERE id='$correlator'";
$dbh->do($sql2);
print $sql2;
}
usleep(1000000);
}
【问题讨论】:
-
发布实际数据样本和想要的输出会很有帮助。
-
如果有帮助,请添加相关数据库的快照。
标签: php mysql sql database perl