我正在使用一个php sms API,它向我的注册用户发送短信(不是电子邮件)。因此,在我的 html 表单中,有一个选项可以通过上传所有联系人存在的文件来发送短信。 成功发送短信后,我将其保存到mysql db。
好吧,现在一切都很好,但是在我的.txt文件中(通过上传.txt文件发送短信)存在2个联系人。所以它必须在我的数据库表中保存 2 个数据。但不幸的是,它已将 4 个数据保存到数据库中。我不明白问题出在哪里。你能告诉我为什么它保存了 4 个数据吗?
我的 php 代码:
$file_handle = fopen("$file", "r");
while (!feof($file_handle) )
{
$line_of_text = fgetcsv($file_handle, 1024);
$line_of_text[0]=$line_of_text[0];
$obj = new Sender("websms.dnstel.com","my port","my username","my password","$sender", "$msg",
$line_of_text[0],"2","1");
$obj->Submit();
$success_number[]=$line_of_text[0];
//saved sms to db
$sql = mysql_query("INSERT INTO e_sent_sms VALUES('', '$line_of_text[0]', '$msg', '', '',
'$length', '$type', '$sender', '$current_date', '$ip' )");
}
echo "<div class='success'>Successfully sent your message to " . implode(',',$success_number) ."
Thank You.</div>";
fclose($file_handle);
.txt文件
8801674455258
8801674455852
谢谢。
将 while 语句更改为:
while(($line_of_text = fgetcsv($file_handle, 0)) !== FALSE)
并删除:
$line_of_text = fgetcsv($file_handle, 1024);
如果您检查!feof($file_handle)
并且文件有空格,则条件将变为有效。如果您使用 fgetcsv($file_handle)
它将从 csv/text 中获取行作为NULL
(如果为空)或值(如果以数组格式有效),您可以从中处理结果。
所以你的代码应该看起来像这样,
while (($line_of_text = fgetcsv($file_handle,1024)) && $line_of_text[0])
{
//$obj = new Sender("websms.dnstel.com","my port","my username","my password","$sender", "$msg", $line_of_text[0],"2","1");
//$obj->Submit();
//$success_number[]=$line_of_text[0];
//saved sms to db
$sql = mysql_query("INSERT INTO e_sent_sms VALUES('', '$line_of_text[0]', '$msg', '', '','$length', '$type', '$sender', '$current_date', '$ip' )");
}