我已經設置好了所有東西,並且這個工作正常,但是當我點擊提交時,我不能添加'或者任何其他標點符號而沒有得到MySQL語法錯誤。我想知道如何將標點符號添加到我的表單的文本行中。我將它設置爲Collation下的utf8_unicode_ci,但仍然出現語法錯誤。允許將標點符號提交給MySQL db
textarea是我希望能夠用任何標點或字符提交的地方。這是我的。
這是我使用
print "<form method=post action=reply.php>";
print "<h3>Reply:</h3>";
print "<br><textarea name=reply_content textarea rows=4 cols=50></textarea>";
print "<input type=hidden name=reply_user value={$_SESSION['user_name']}>";
print "<input type=hidden name=topic_id value=$id>";
print "<br><input type=submit></form>";
形式這是SQL的reply.php
$reply_content=$_POST['reply_content'];
$reply_time=date('Y-m-d H:i:s');
$reply_user=$_POST['reply_user'];
$topic_id=$_POST['topic_id'];
mysql_query("INSERT INTO reply VALUES ('reply_id', '$reply_user', '$reply_content', '$reply_time', '$topic_id')") OR die(mysql_error());
print "<center><h1>Reply Posted Successfully</h1>";
我知道有一種方法可以做到這一點,我只是不知道如何。如果有人能幫助我,我會非常感激!
這是一個常見的,很好理解的問題。 SQL語句要求轉義某些字符纔是有效的,並且要避免嚴重的SQL注入漏洞(任何人都可能會篡改數據庫)。從[如何防止SQL注入PHP]開始(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)並開始學習使用PDO而不是' mysql_query()',因爲後者是一箇舊的,現在被棄用的API。沒有新的代碼應該用'mysql _ *()'函數編寫,因爲你只是在學習,所以這是一個很好的學習時間。 – 2014-11-02 22:27:31
本教程[PDO for mysql developers](http://wiki.hashphp .org/PDO_Tutorial_for_MySQL_Developers)是一個很好的資源,它在舊的'mysql _ *()'函數的上下文中構造了PDO並準備了語句。 – 2014-11-02 22:28:40