簡體   English   中英

防止使用php將空數組記錄提交到MYSQL數據庫中

[英]Prevent empty array records from being submitted in to MYSQL database using php

我想防止將數組中的空記錄提交到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循環將被執行,現場m_lastname從表group_members將插入后空。

由於沒有人回答這個問題,所以我終於有了解決方法,我將分享它,因為有人會遇到我的問題並偶然遇到這個問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM