4

我正在使用 PHP 从表单中插入日期。我有 24 个字段,用户可以在其中将数据插入数据库。问题是我如何不允许空字段成为 MySQL 中的行,它们是否被用户留空?所有字段都不是必需的,并且字段被格式化为输入文本字段。一旦被查询,我被认为使用的是值部分中的 if 语句;这是一个例子:

/**************
* HTML Form
**************/
<form action='insert.php' method='post'>

<p> What items do you have for sale?</p>

Item 1: <input type='text' name='item1'> Price: <input type='text' name='item1cost'>
Item 2: <input type='text' name='item2'> Price: <input type='text' name='item2cost'>
Item 3: <input type='text' name='item3'> Price: <input type='text' name='item3cost'>

<input type="submit" name="Submit" value="Submit">
</form>


/**************
* PHP
**************/

$user = (from $_SESSION)
$item1      = $_POST['item1'];
$item1cost  = $_POST['item1cost'];
$item2      = $_POST['item2'];
$item2cost  = $_POST['item2cost'];
$item3      = $_POST['item3'];
$item3cost  = $_POST['item3cost'];


/*********************
* MySQL INSERT query
*********************/

$query = "INSERT INTO monthly_expenses (`userid`, `item`, `amount`)" 
                                   . "VALUES ($user,'$item1', '$item1cost'),
                                             ($user,'$item2', '$item2cost'),
                                             ($user,'$item3', '$item3cost'),

如果用户将任一字段留空,我怎样才能让它们不插入到数据库中,所以没有只有用户 ID 的空行?

4

3 回答 3

3

您可以将值放入数组中,然后检查它们是否为空(可能会推荐一些其他有关安全问题的检查)并创建 $values 变量,您可以将其加载到数据库中。

$item[0]      = mysql_real_escape_string(trim($_POST['item1']));
$itemcost[0]  = mysql_real_escape_string(trim($_POST['item1cost']));
$item[1]      = mysql_real_escape_string(trim($_POST['item2']));
$itemcost[1]  = mysql_real_escape_string(trim($_POST['item2cost']));
// and so on

$values = "";
for ($i = 0; $i < 2; ++$i) {
    if ($item[$i] != "" && $itemcost[$i] != "") {
        $values .= "($user,'$item[$i]', '$itemcost[$i]'),";
    }
}

/*********************
* MySQL INSERT query
*********************/

if ($values != "") {
  $values = substr($values, 0, -1);
  $query = "INSERT INTO monthly_expenses (`userid`, `item`, `amount`)" 
                                   . " VALUES $values";
}

也可以将 HTML 输入字段名称作为数组提供,如 item[] 并将它们直接解析为 php-arrays。

于 2012-12-11T16:21:40.127 回答
0

在摆姿势之前使用客户端验证。如果未按照您的要求填写表格,则会通知并强制用户填写。

请参阅本教程以获取帮助。

于 2012-12-11T16:39:57.670 回答
0

您可以将 html 存储为数组值。

   <input type="text" name="item[]" />
   <input type="text" name="itemcost[]" />

然后你可以像这样循环它们:

   $query = "INSERT INTO monthly_expenses (`userid`, `item`, `amount`) VALUES ";

   foreach($_POST['item'] as $key => $value){
   {
        // Check if it's not filled.
        if($value !== '')
        {
              $query .= "($user, '$value', $_POST['itemcost'][$key])"; // whatever you need to insert.
        }
   }
   // Run the query.

我可能有一些错别字,但这个概念是存在的。

于 2012-12-11T16:56:19.487 回答