2014-01-25 100 views
0

好的,這是我的問題。我正在爲我的網站製作一個發佈腳本。但是這個腳本不起作用;腳本如下:PHP和MySQL發佈系統

<?php 
     // Make sure the user is logged in before going any further. 
     if (!isset($_SESSION['user_id'])) { 
     echo '<p class="login">Please <a href="login.php">log in</a> to access this page.</p>'; 
     exit(); 
     } 
     else { 
     echo('<p class="login">You are logged in as ' . $_SESSION['username'] . '. <a href="logout.php">Log out</a>.</p>'); 
     } 

     // Connect to the database 
     $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 

     if (isset($_POST['submit'])) { 
     // Grab the profile data from the POST 
     $post1 = mysqli_real_escape_string($dbc, trim($_POST['post1'])); 
     $query = "INSERT INTO ccp2_posts ('post') VALUES ('$post1')"; 

     $error = false; 

     mysqli_close($dbc); 
    ?> 




    <form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
     <legend>Posting</legend> 
      <label for="post">POST:</label> 
      <textarea rows="4" name="post1" id="post" cols="50">Write your post here...</textarea><br /> 
      <input type="submit" value="submit" name="submit" /> 
    </form> 

    </div> 

     <?php 

    include ("include/footer.html"); 

    ?> 

    </body> 
    </html> 

當我提交表單時,數據庫中沒有任何內容顯示。幫助將是驚人的。謝謝。

+1

快速提示:使用'action =「」'而不是將'$ _SERVER ['PHP_SELF']'放入動作中。如果你使用'RewriteRule'來生成「漂亮」的URL,這非常棒。 –

+0

並且'session_start();'位於... –

+0

檢查錯誤 –

回答

0

您可能還有其他問題,但是您的SQL很糟糕。您不能在'post'附近使用單引號。你想反引號或什麼也沒有:

INSERT INTO ccp2_posts(post) VALUES ('$post1') 
1

你還沒有執行查詢。你所做的只是打開一個連接,定義查詢字符串並關閉連接。

地址:

if(msyqli_query($dbc, $query)) { 
    // Successful execution of insert query 
} else { 
    // Log error: mysqli_error($dbc) 
} 

此行之後:

$query = "INSERT INTO ccp2_posts ('post') VALUES ('$post1')"; 

更新:

已開始編輯,但不得不離開......至於其他的回答者都指出你需要或者請用backick引用post列或刪除您目前完全使用的單引號。唯一需要使用反引號來轉義MySQL Reserved Words之一的標識符的情況。

所以您查詢的工作版本將是:

$query = "INSERT INTO ccp2_posts (post) VALUES ('$post1')"; 
+0

好吧...這是事情。沒有人明白這個問題的重點。也許是我用它的方式。我想爲帖子添加評論。這是**帖子**的代碼,而不是**評論**,這是我需要幫助的部分。 – user2544765

0

你錯過了

mysqli_query($dbc,$query); 

在你的代碼,

$query = "INSERT INTO ccp2_posts ('post') VALUES ('$post1')"; 
mysqli_query($dbc,$query); 
+0

你錯過了他們使用'mysqli'的事實。 –

+0

@NiettheDarkAbsol這是一個錯字 –

+0

缺失的論點......你一會兒就會明白,我敢肯定! –

0

您的查詢是不完全正確:

$query = "INSERT INTO `ccp2_posts` (`post`) VALUES ('$post1')"; 

請注意,這些是反引號`,而不是單引號。這個非常重要!反引號用於命名數據​​庫,表和列名,尤其是它意味着您不必記住每個保留字的大量列表。如果你願意,你可以打電話給你的專欄`12345 once I caught a fish alive!`

無論如何,更重要的是,你實際上並沒有運行你的查詢!

mysqli_query($dbc,$query); 
0

您沒有使用例如mysql_query()函數提交到數據庫。

+1

*旁註:*停止使用已棄用的'mysql_ *'函數。改爲使用[MySQLi](http://php.net/manual/en/book.mysqli.php)或[PDO](http://php.net/manual/en/book.pdo.php)。這是一個很好的[教程](http://j.mp/PoWehJ)PDO。 – Raptor

+0

@ShivanRaptor是對的。準備好的聲明規則! –