2

我正在使用一个 php 短信 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

谢谢。

4

2 回答 2

1

将您的 while 语句更改为:

while(($line_of_text = fgetcsv($file_handle, 0)) !== FALSE)

并删除:

$line_of_text = fgetcsv($file_handle, 1024);
于 2013-09-26T07:39:38.563 回答
0

如果您检查!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' )");
}
于 2013-09-26T07:48:52.483 回答