我想防止数组中的空记录提交到MYSQL数据库:
HTML部分:
<input type="text" name="m_name[]" value="name"/>
<input type="text" name="m_lastname[]" value="lastname"/>
<input type="text" name="m_name[]" value="second_name"/>
<input type="text" name="m_lastname[]" value="second_lastname"/>
<input type="text" name="m_name[]" value=""/>
<input type="text" name="m_lastname[]" value=""/>
这是PHP和MySQL的部分:
if(!empty($_POST['m_name'])) $m_name = array_map('mysql_real_escape_string', $_POST['m_name']);
if(!empty($_POST['m_lastname'])) $m_lastname = array_map('mysql_real_escape_string', $_POST['m_lastname']);
for($l=0; $l < count($m_name); $l++){
mysql_query("INSERT INTO `group_members` SET
`m_name` ='".$m_name[$l]."',
`m_lastname` ='".$m_lastname[$l]."'"
);
}
问题是,所有6个输入,无论那些不包括任何值的输入,都被提交到数据库。我做错了什么?!
我认为问题在于,如果$m_name
不是空的,但$m_lastname
是空的,那么将执行for循环,并且表group_members
中的字段m_lastname
在插入后将为空。
由于没有人回答这个问题,我终于知道了如何做,我会分享它,因为有人会遇到我的问题,并偶然进入这个问题:
只需使用array_filter()
,它就可以方便地为您处理所有这些:
$m_name = array_filter(array_map('mysql_real_escape_string', $_POST['m_name']));
$m_lastname = array_filter(array_map('mysql_real_escape_string', $_POST['m_lastname']));