防止使用php将空数组记录提交到MYSQL数据库

时间:2015-04-09 07:41:52

标签: php mysql

我想阻止数组中的空记录被提交到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个输入,无论是否包含任何值,都将被提交到数据库。我做错了什么?!

2 个答案:

答案 0 :(得分:0)

我认为问题在于,如果$m_name不为空但$m_lastname为空,则执行for循环并从表{{1}执行字段m_lastname插入后将为空。

答案 1 :(得分:0)

由于没有人回答这个问题,我终于明白了怎么做了,我会分享它,因为有人会遇到我的问题并偶然得到这个问题:

只需使用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']));