2014-01-26 35 views
0

我试图发送电子邮件内的数组数据,无法让这个东西工作。 这里是确切的代码。在电子邮件内发送mysql提取的阵列数据

$c = mysql_query("SELECT item,qty,price,uom FROM saleitems WHERE saleinvid = '222384' "); 
$to = "[email protected]"; 
$subject = "Invoice from company"; 
$headers = "Content-type: text/html\r\n"; 
$message = 'Greetings, 
    you are receiving this email as an invoice as follows: 
    <table border="1"> 
     <tr> 
      <td>Description</td> 
      <td>Quantity</td> 
      <td>Price</td> 
      <td>UOM</td> 
     </tr> 
     '; 
while ($row = mysql_fetch_array($c)){ 
$message .="<tr>"; 
$message .="<td>".$row['item']."</td>"; 
$message .="<td>".$row['qty']."</td>"; 
$message .="<td>".$row['price']."</td>"; 
$message .="<td>".$row['uom']."</td>"; 
$message .="</tr>"; 
} 
$message .="</table>Thank You,COMPANY"; 
mail($to,$subject,$message,$headers); 

邮件被发送,但我看到的是表头行和“谢谢你,公司”行,但之间没有项目。任何帮助是极大的赞赏。 我的电子邮件提供商支持HTML邮件

+0

您确定您的电子邮件提供商支持html吗? – Iordanis

+0

首先,从代码中删除“打印”电话。 – hindmost

+0

请检查您的查询中返回的行数错误,然后返回此处并打印结果。 – crafter

回答

0

我认为打印的电话是没有必要的,因为这种方式print总是返回1,它实际上并没有尝试将$ row [...]连接到您的消息。

试试这样说:

$message .= "<td>" . $row["item"] . "</td>" ;

编辑: 在邮件就可以看到表格的标题,这表明该问题不是数据的格式。所以问题一定是脚本不运行while语句。

请编辑mysql_query调用此:

$c = mysql_query("SELECT item,qty,price,uom FROM saleitems WHERE saleinvid = '222384' ") or die(mysql_error()); 

这表明你,如果你在你的SQL查询(例如拼写错误表或字段名)有一个错误。

也尝试直接在MySQL命令行中执行您的查询,以控制结果是否真的有一些记录。