php - 防止空数据插入数据库

标签 php mysql

我有一个表单,为用户提供了在 3 列中的 1 列中发布的选项。如果用户决定他们想在第一列中发布,那么他们单击第 1 列按钮,我的 jquery 脚本将删除其他 2 个输入字段。

问题是这些列中的每一列都链接到数据库中它自己的表,因此每次用户在其中 1 列中输入信息时,它都会被发送到着陆页,并在其中更新所有 3 个表。

如果用户选择第 1 列,那么他们的信息将被插入到第 1 列表中,但空白行也会被插入到表 2 和表 3 中。

<?php
     $con=mysqli_connect("URL", "DB", "password","DB_Name");
      // Check connection
      if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }

     // escape variables for security
     $Main= mysqli_real_escape_string($con, $_POST['Column_1']);
     $storyn1 = mysqli_real_escape_string($con, $_POST['storyn1']);

     $sql="INSERT INTO Column_1 (Link1, storyn1) 
     VALUES ('$Main', '$storyn1')";

    if (!mysqli_query($con,$sql)) {
       die('Error: ' . mysqli_error($con));
    }
    mysqli_close($con);

   $con=mysqli_connect("URL", "DB", "password","DB_Name");
   // Check connection
   if (mysqli_connect_errno()) {
     echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

     // escape variables for security
    $MLB= mysqli_real_escape_string($con, $_POST['MLB']);
    $storyn2 = mysqli_real_escape_string($con, $_POST['storyn2']);

    $sql="INSERT INTO Column_2 (Link, storyn2) 
    VALUES ('$MLB', '$storyn2')";

    if (!mysqli_query($con,$sql)) {
       die('Error: ' . mysqli_error($con));
    }
    mysqli_close($con);

    $con=mysqli_connect("URL", "DB", "password","DB_Name");;
    // Check connection
    if (mysqli_connect_errno()) {
       echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

     // escape variables for security
     $Column_3= mysqli_real_escape_string($con, $_POST['Column_3']);
     $storyn3 = mysqli_real_escape_string($con, $_POST['storyn3']);

     $sql="INSERT INTO Column_3 (Link3, storyn3) 
     VALUES ('$Column_3', '$storyn3')";

    if (!mysqli_query($con,$sql)) {
      die('Error: ' . mysqli_error($con));
     }

mysqli_close($con);
?>

我觉得我将空白行插入表格的原因是因为此页面包含所有 3 个表格的插入代码。最好的做法是什么?我是否需要 3 个单独的着陆页来容纳这些插入代码?

这是根据以下建议更新后的代码:

                 // escape variables for security
                $Main= mysqli_real_escape_string($con, $_POST['Column_1']);
                $storyn1 = mysqli_real_escape_string($con, $_POST['storyn1']);

                $MLB= mysqli_real_escape_string($con, $_POST['MLB']);
                $storyn2 = mysqli_real_escape_string($con, $_POST['storyn2']);

                $Column_3= mysqli_real_escape_string($con, $_POST['Column_3']);
                $storyn3 = mysqli_real_escape_string($con, $_POST['storyn3']);

                if(!empty($_POST['Column_1']) && !empty($_POST['storyn1'])) {
                          $sql="INSERT INTO Column_1 (Link1, storyn1) 
                     VALUES ('$Main', '$storyn1')";
                    }

                    if(!empty($_POST['MLB']) && !empty($_POST['storyn2'])) {
                       $sql="INSERT INTO Column_2 (Link, storyn2) 
                VALUES ('$MLB', '$storyn2')";
                    }

                  if(!empty($_POST['Link3']) && !empty($_POST['storyn3'])) {
                        $sql="INSERT INTO Column_3 (Link3, storyn3) 
                VALUES ('$Column_3', '$storyn3')";
                    }


                ?>

最佳答案

一个简单的方法是使用 PHP empty()在执行插入操作之前检查用户提交的值是否为空的方法。所以你的代码可能看起来像:

<?php
    if(!empty($_POST['Column_1']) && !empty($_POST['storyn1'])) {
        // insert into table Column_1
    }

    if(!empty($_POST['MLB']) && !empty($_POST['storyn2'])) {
        // insert into table Column_2
    }

    if(!empty($_POST['Link3']) && !empty($_POST['storyn3'])) {
        // insert into table Column_3
    }
?>

至于是否需要有3个独立的landing page(或者forms,views等),不是必须的;这实际上取决于您的 3 列是否形成一个有凝聚力的逻辑分组。我的建议绝对是重构您的 PHP 代码以使用 classes and objects .

关于php - 防止空数据插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25152290/

相关文章:

MySQL问题(连接)

PHP PDO 从数据库中查询代码不显示,仅在源代码中显示

php - 使用 LightOpenID 获取 Google 通讯录?

PHP - session_set_cookie_params 和 session_get_cookie_params

php - 使用准备好的语句将值插入数据库

mysql - 用可为空的 :true 更新域列

php - 在 Yii2 中使用 Gii 从数据库 View 创建 CRUD

javascript - 使用 PHP 输出的 Javascript 数组时出现未定义错误

php - MySQL 在给定时间段内找到前 x%

php - 图像插入数据库并显示使用 php 和 mysql 不起作用