无法获得要存储在数据库中的表单帖子

时间:2015-05-15 05:49:08

标签: mysql database forms

我无法弄清楚为什么我的表单中的帖子不会保存在数据库中。

这是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 &#40;max 25,000 charachters&#41;"></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();
?>

2 个答案:

答案 0 :(得分:1)

正如@maku所说,你需要执行查询。但也有更多。

您添加了$mysql_query,这是不正确的。

  1. 这是错误的API(mysql与mysqli)。
  2. 您还需要包含数据库连接。
  3. 如果您的id列为auto_increment,则无需插入。自动发生。
  4. 没有理由为查询分配变量,因为您没有选择任何内容。
  5. 我建议您使用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日期函数。