将表数据插入到数据库中会忽略!空检查并仍然插入

时间:2015-09-30 18:15:26

标签: php html

我有多个用户可以输入数据的表。如果用户选择他们不必在每个表中输入数据,我会在迭代数据并开始将其插入数据库之前检查字段是否为空。

以下是其中一个表格:

<table id="budget_table">
<thead>
    <tr>
        <th>Roofs</th>
        <th>Area</th>
        <th>Recommendation</th>
        <th>Budget</th>
    </tr>
</thead>
<tbody id="budget_tb">
    <tr id="budget_row0">
        <td><input id="budget-roofs" name="budget-roofs[]" placeholder="Entire Roof Area"></td>
        <td><input id="budget-area" name="budget-roof-area[]" placeholder="Approx. 1,000 Sq. Ft."></td>
        <td><input id="budget-recommendation" name="budget-recommendation[]" placeholder="Roof Repairs & Maintenance"></td>
        <td><input id="budget-amount" name="budget-amount[]" placeholder="$1,500.00 to $2,500.00"></td>
    </tr>
</tbody>
</table>

<input type="submit" value="Create" name="submit">

当用户点击提交时,我将检查第一个输入字段是否为空,如果是空,我想什么都不做。如果它在输入字段中有某些内容,那么我想将该数据转储到数据库中。

以下是我的PHP的样子:

var_dump($_POST['budget-roofs']); //I added this to see what was going on

if(!empty($_POST['budget-roofs'])){ 
    //foreach budget row insert data
    foreach ($_POST['budget-roofs'] as $index => $roofs) {
        $area = $_POST['budget-roof-area'][$index];
        $recommendations = $_POST['budget-recommendation'][$index];
        $amount = $_POST['budget-amount'][$index];

        //insert queries
    }
}

如果我在输入字段中没有输入任何内容,则会在我的数据库中提交一个空字符串。

我使用var_dump检查它是否真的是空的,也许是为什么它忽略了我的检查。这就是我的表现:

array (size=1)
  0 => string '' (length=0)

所以它显示我的大小为1(所以它不是空的,这就是我的检查被忽略的原因)。

但是我不确定为什么它有一个空字符串?

我尝试取出placeholder属性,因为我认为这可能会导致某些问题,但这也不是问题。

有没有更好的方法来检查是否要查看我的输入字段是否为空并确保空字符串不会被转储到数据库中?

来自哪个空字符串?

1 个答案:

答案 0 :(得分:2)

  

但是我不确定为什么它有一个空字符串?

表单中的输入字段已提交,如果它们不包含任何数据(由用户输入),则会将其提交为空。

<?php
var_dump($_POST);
?>

<form method="post" action="example.php">
    <input type="text" name="arr" value="">
    <input type="submit" name="submit" value="Submit">
</form>

如果您提交上面的表格为空:

array(2) { ["arr"]=> string(0) "" ["submit"]=> string(6) "Submit" }

预算屋顶中至少有一个数组元素,因为它存在于表单中。 <input id="budget-roofs" name="budget-roofs[]" placeholder="Entire Roof Area">如果您没有输入输入,它仍然是空的。

  

有没有更好的方法来检查是否查看我的输入字段是否   为空并确保空字符串不会被转储到数据库中?

您必须单独检查每个元素。

foreach ($_POST['budget-roofs'] as $index => $roofs) {
   if (! empty($roofs) 
     // Insert here. But remember to check the other fields, they may be empty as well.