首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入时使用if语句消除MySQL中的空行和空列

问插入时使用if语句消除MySQL中的空行和空列
EN

Stack Overflow用户
提问于 2012-12-12 00:12:01
回答 3查看 457关注 0票数 4

我正在使用PHP从表单中插入日期。我有24个字段,用户可以在数据库中插入数据。问题是,如果用户将空字段留空,我如何不允许空字段成为MySQL中的行呢?所有字段都不是必填字段,并且字段格式化为输入文本字段。我考虑使用的是查询后值节中的if语句;下面是一个示例:

代码语言:javascript
复制
/**************
* 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'),

如果用户将任何一个字段留空,我如何才能让它们不插入到数据库中,这样就不会有只有userid的空行?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-12 00:21:40

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

代码语言:javascript
复制
$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数组。

票数 3
EN

Stack Overflow用户

发布于 2012-12-12 00:39:58

在摆造型之前使用客户端验证。如果没有按照您的要求填写表单,则会通知用户并强制用户这样做。

请参阅此以获取帮助。

票数 0
EN

Stack Overflow用户

发布于 2012-12-12 00:56:19

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

代码语言:javascript
复制
   <input type="text" name="item[]" />
   <input type="text" name="itemcost[]" />

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

代码语言:javascript
复制
   $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.

我可能有一些打字错误,但概念是存在的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13823946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档