【发布时间】: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();
}
【问题讨论】:
-
代替 INPUT_POST 使用 $_POST['first_name'] 作为 strip_tags($_POST['first_name']);
-
您可以通过以下方式进行调试:1) 打印所有变量并确保检索到值; 2)打印
$sql并在phpMyAdmin中执行,看看是否有效。