我正在运行一个插入以下变量的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
,并且当电子邮件尝试发送时,我会收到错误,因为存在第一个而不是电子邮件地址
如果之前什么都没有,我如何使、不插入,而插入,如果之前有其他数据要添加?
除了您的代码风格和用户直接在SQL语句中输入的潜在安全问题外,
您正在寻找implode();
。
示例:
$mails = array('test@test.com', 'bla@bla.com');
if (is_array($mails)) {
echo implode(',', $mails); //prints test@test.com,bla@bla.com
}
一个简单的解决方案是走另一条路,创建类似的变量
$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 "].',';
这样,最后的字符串将是安全的。
但是,我建议不要在数据库中进行这样的保存。创建包含表示对象的个人信息的表,并使用类似ORM的原则来实现更健壮和可扩展的解决方案。