【问题标题】:While clicking submit i get an error but its still inserting data in the database单击提交时出现错误,但它仍在数据库中插入数据
【发布时间】:2018-02-06 14:44:31
【问题描述】:

我做了一个表格,当我没有填写表格时,我得到了我想要的错误。 我犯的错误示例:

Error if you dont fill in anything

error if you fill in capital letters

所以现在如果你按下回车,你需要得到一个错误。它给了我错误,然后它插入了错误的空数据,它根本不应该插入数据。

这是我的代码:

<?php


// Connecting to database
require('config.php');


if (isset($_POST['companyname']) && isset($_POST['name']) && isset($_POST['surname']) && isset($_POST['email']) && isset($_POST['function']) && isset($_POST['password'])) {






    // Values to insert
    $companyname = mysqli_real_escape_string($con, $_POST['companyname']);
    $name        = mysqli_real_escape_string($con, $_POST['name']);
    $surname     = mysqli_real_escape_string($con, $_POST['surname']);
    $email       = mysqli_real_escape_string($con, $_POST['email']);
    $function    = mysqli_real_escape_string($con, $_POST['function']);
    $password    = mysqli_real_escape_string($con, $_POST['password']);


    $companyname_error = "";

    function test_input($data)
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }


    if ($_SERVER["REQUEST_METHOD"] == "POST") {


        // empty
        if (empty($_POST['companyname'])) {

            $companyname_error = "companyname is required!";

        } else {
            $companyname = test_input($_POST["companyname"]);
            //check characters validation
            if (!preg_match("/^[^A-Z]+$/", $companyname)) {

                $companyname_error = "Only use small letters and white spaces!";

            }
        }
    }



    // voer insert uit
    $sql = $con->prepare("INSERT INTO company (companyname) VALUES (?)");
    $sql->bind_param('s', $companyname);

    $sql->execute();


    //RESULT
    $result = $sql->get_result();

    // id
    $companyId = mysqli_insert_id($con);


    //insert INTO
    $sql = $con->prepare("INSERT INTO employee (name, surname, email, function, password, companyid) VALUES (?, ?, ?, ?, ?, ?)");
    $sql->bind_param('ssssss', $name, $surname, $email, $function, $password, $companyId);
    $sql->execute();
    $result = $sql->get_result();




}


?>

HTML 表单:

<form class="form_register_page" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
                        <div class="form-group">
                            <label class="register_headers">full name</label> <input class="form-control" id="name" name="name" placeholder="Enter your full name" type="text">
                        </div>
                        <div class="form-group">
                            <label class="register_headers">Full last name</label> <input class="form-control" id="lastname" name="surname" placeholder="Enter your last name" type="text">
                        </div>
                        <div class="form-group">
                            <label class="register_headers">company name</label> <input class="form-control" id="company" name="companyname" placeholder="Enter your company" type="text">
                            <span class="error">* <?php echo $companyname_error;?></span>
                        </div>
                        <div class="form-group">
                            <label class="register_headers">function</label> <input class="form-control" id="function" name="function" placeholder="Enter your function" type="text">
                        </div>
                        <div class="form-group">
                            <label class="register_headers">E-Mail adress</label> <input class="form-control" id="email" name="email" placeholder="Enter your E-Mail adress" type="text">
                        </div>
                        <div class="form-group">
                            <label class="register_headers">Password</label> <input class="form-control" id="password" name="password" placeholder="Enter your password" type="password">
                        </div>
                        <div class="form-group">
                            <div class="form-check">
                                <label class="form-check-label"><input class="form-check-input" type="checkbox"> I agree all statements in <b>terms of service</b></label>
                            </div>
                        </div><button class="click_more" type="submit">Register</button> 







                    <span class="error">

                    <?php 

                        echo $companyname_error;


                    ?>
                    </span>



                        </form>

【问题讨论】:

  • test_input() 不要使用那个。
  • 我做了清晰的代码图片刷新一下
  • mysqli_real_escape_string() 两者都不要使用;您已经在使用准备好的语句,并且可能弊大于利。
  • 你能发布你的html表单吗?
  • 是的,我仍然会尝试解决这个stackoverflow;(

标签: php mysql database forms post


【解决方案1】:

您的 $sql->execute() 语句始终运行,因为它们完全位于测试错误条件的代码块之外,并且没有单独测试已引发的错误。如果您将插入内容放在 $companyname_error 为空的测试中,您将无法获得插入内容。例如

if (empty($comanyname_error))
   { 
      do your inserts here 
   }

【讨论】:

    猜你喜欢
    • 2017-06-07
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2017-04-26
    • 1970-01-01
    相关资源
    最近更新 更多