【问题标题】:Submitting form adds empty rows in database提交表单在数据库中添加空行
【发布时间】:2018-08-01 07:38:53
【问题描述】:

我看到了类似的主题,但在尝试了一些提到的解决方案后,我仍然没有找到正确的答案。我对 MySQL 和 PHP 还很陌生,我很确定某处有一个我看不到的小错误,但是我在这个问题上苦苦挣扎了几天,所以我决定问一下。

问题是,当我创建一个 html 表单和将表单中的值插入数据库的方法时,我得到了“成功”的插入,但所有添加到数据库中的行仍然是空的。

HTML 表单:

<div class="panel panel-default">
<div class="panel-body">
<form action="InsertMessage.php" method="post">
    <div class="form-group">
        <label for="comment">First name:</label>
        <textarea class="form-control" id="comment" name=first_name rows="1" required></textarea>
    </div>
    <div class="form-group">
        <label for="email">Email address:</label>
        <input type="email" class="form-control" name="email" id="email" required>
    </div>
    <div class="form-group">
        <label for="date">Date:</label>
        <input type="date" class="form-control" name="desired_date" id="desired_date" required>
    </div>
    <div class="form-group">
        <label for="time">Time:</label>
        <input type="time" class="form-control" name="desired_time" id="desired_time" required>
    </div>
    <div class="form-group">
        <label for="comment">Comment</label>
        <textarea class="form-control" id="comment" name="info" rows="3" placeholder="placeholder" required></textarea>
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
</div>

PHP 代码:

$host = "localhost";
$username = "root";
$password = "";
$database = "name";

//create a connection

$conn = new mysqli($host, $username, $password, $database);

$first_name = filter_input(INPUT_POST, 'first_name');
$email = filter_input(INPUT_POST, 'email');
$desired_date = filter_input(INPUT_POST, 'desired_date');
$desired_time = filter_input(INPUT_POST, 'desired_time');
$info = filter_input(INPUT_POST, 'info');

if(mysqli_connect_error()){
    die('Connection error (' . mysqli_connect_errno() . ')' . 
mysqli_connect_error());
}else{
    $sql = "INSERT INTO messages (first_name, email, desired_date,  
desired_time, info) VALUES 
('$first_name','$email','$desired_date','$desired_time','$info')";
    if ($conn->query($sql)){
        echo "New record is inserted successfully!";
    }
    else{
        echo "Error:" . $sql . $conn->error;
    }
    $conn->close();
}

来自 phpmyadmin 的屏幕截图:

【问题讨论】:

  • 代替 INPUT_POST 使用 $_POST['first_name'] 作为 strip_tags($_POST['first_name']);
  • 您可以通过以下方式进行调试:1) 打印所有变量并确保检索到值; 2)打印$sql并在phpMyAdmin中执行,看看是否有效。

标签: php html mysql database


【解决方案1】:

试试这个

$host = "localhost";
$username = "root";
$password = "";
$database = "name";

//创建连接

$conn = new mysqli($host, $username, $password, $database);
$first_name     = $_POST['first_name'];
$email          = $_POST['email'];
$desired_date   = $_POST['desired_date'];
$desired_time   = $_POST['desired_time'];
$info           = $_POST['info'];
if(mysqli_connect_error()){
die('Connection error (' . mysqli_connect_errno() . ')' .mysqli_connect_error());
}else{
$sql = "INSERT INTO messages set `first_name`='$first_name', email='$email', desired_date='$desired_date',desired_time='$desired_time', info='$info' ";
if ($conn->query($sql)){
    echo "New record is inserted successfully!";
}
else{
    echo "Error:" . $sql . $conn->error;
}
$conn->close();
}

【讨论】:

  • 嘿,谢谢你的回答,但不幸的是,使用这种方法仍然不起作用..
猜你喜欢
  • 1970-01-01
  • 2015-07-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 2021-10-29
  • 2014-12-24
  • 2015-01-03
相关资源
最近更新 更多