2015-05-15 45 views
0

我不明白爲什麼我的表單中的文章不會保存在數據庫中。無法獲取表單文章存儲在數據庫中

這是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(); 
?> 
+0

回聲查詢並注意CURDATE()不需要「」此外,來自列和值刪除ID。 – Strawberry

回答

-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日期函數。

+0

我編輯了我的問題以反映我對代碼所做的更改,但它仍然無效。我需要提交文章嗎?它目前是這樣的:'' – tdrsam

+0

可以發佈完整的代碼,包括html? – Sherlock

+0

添加了html。 – tdrsam

1

正如@maku所說,你需要執行查詢。但也有更多。

您已添加$mysql_query,這是不正確的。

  1. 這是錯誤的API(mysql與mysqli)。
  2. 你還需要包含你的db連接。
  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(); 
    
+0

修正了1&2.修改了3,修正了4.不知道我需要5.添加html到問題 – tdrsam

+0

我添加了錯誤代碼,但沒有顯示錯誤,只是沒有進入數據庫。我懷疑它可能是我的提交按鈕。 – tdrsam

+0

@ user2964055 - PHP與表單是否在同一個文件中?嘗試'isset($ _ POST ['submit'])'在我的答案中已更新,您希望將其基於名稱,而不是值,因此它應該是小寫。你也可以添加'echo「test」;退出;在'isset'裏面驗證提交的表單。 – EternalHour