-1

我正在运行插入以下变量的 SQL INSERT 查询:

'".$emails_list."".$extra_emails_list."".$cc_email_to."', 

我需要用 分隔每个电子邮件地址因此 $cc_email_to var 看起来像:

$cc_email_to = ','.$_POST["email_cc"];

但如果其中$emails_list$extra_emails_list没有电子邮件地址,则 $cc_email_to 变量正在插入, email@domain.com,并且当电子邮件尝试发送时,我会收到错误,因为有一个 , first 而不是一个电子邮件地址

如果之前没有要添加的其他数据,我该如何制作,如果之前没有任何内容则不插入?

4

2 回答 2

0

除了您的代码风格和用户直接在 SQL 语句中输入的潜在安全问题之外,

你正在寻找implode();

例子:

$mails = array('test@test.com', 'bla@bla.com');

if (is_array($mails)) {
    echo implode(',', $mails); //prints test@test.com,bla@bla.com
}
于 2013-10-15T13:36:47.323 回答
-1

一个简单的解决方案是采用另一种方式并创建这样的变量

$cc_email_to .= $_POST["email_cc"].',';
if($emails_list!=null) $emails_list .=$_POST["email_list "].',';
if($extra_emails_list!=null) $extra_emails_list .= $_POST["extra_email_list "].',';

这样最终的字符串将是安全的。

但是我建议不要在数据库中保存这样的内容。创建包含代表对象的个人信息的表,并使用像 Doctrine 这样的 ORM 来实现更健壮和可扩展的解决方案。

于 2013-10-15T13:37:29.717 回答