我无法弄清楚为什么我的表单中的帖子不会保存在数据库中。
这是html:
<button type="button" class="write">Write Reviews</button>
<form class="writeForm"method="post">
<input type="text" required name="monicker" placeholder="Name">
<textarea name="review" required maxlength="5000" placeholder="Leave your review here (max 25,000 charachters)"></textarea>
<input type="submit" value="Submit">
</form>
和php:
<?php
$dbc = mysqli::real_connect('localhost', 'user_name', 'not_password');
mysqli::select_db('db_name',$dbc);
$monicker = mysqli::real_escape_string ($_POST['monicker']);
$review = mysqli::real_escape_string ($_POST['review']);
if(isset($_POST['Submit'])) {
$query = "INSERT INTO reviews
(id, monicker, review, date)
VALUES (DEFAULT,'$monicker', '$review', 'CURDATE()');";
mysqlI::query($dbc, $query);
}
mysqlI::close();
?>
答案 0 :(得分:1)
正如@maku所说,你需要执行查询。但也有更多。
您添加了$mysql_query
,这是不正确的。
id
列为auto_increment
,则无需插入。自动发生。我建议您使用prepared statements,然后您不需要使用mysqli::real_escape_string
。
if(isset($_POST['submit'])) {
$query = "INSERT INTO reviews (id, monicker, review, date)
VALUES (DEFAULT,'$monicker', '$review', 'CURDATE()')";
mysqli_query($dbc, $query) or die(mysqli_error($dbc);
}
mysqli::close();
答案 1 :(得分:-1)
你没有执行你的查询: 添加此行。
$result = $mysqli::query($query);
我修改了您的代码,请检查此代码:
<?php
$dbc = mysql_connect('localhost', 'communi3_root', 'typeset');
mysql_select_db('communi3_cfds',$dbc);
$monicker = isset($_POST['monicker']) ? mysql_real_escape_string ($_POST['monicker']) : '';
$review = isset($_POST['review']) ? mysql_real_escape_string ($_POST['review']) : '';
if(isset($_POST['submit'])){
$current_date = date('Y-m-d H:i:s');
$query = "INSERT INTO reviews (id, monicker, review, date) VALUES (DEFAULT,'$monicker', '$review', '$current_date');";
$result = mysql_query($query)or die(mysql_error($dbc));
}
mysql_close();
?>
我在您之前的代码中发现了一个问题: 1.不检查你的POST变量。它会导致错误,因为您直接使用它而不检查它是否已设置。 2. CURDATE()是一个未定义的函数,改为使用PHP日期函数。