2013-08-30 51 views
0

將PHP 5表單插入MySQL數據庫的最佳方式是什麼?將名稱插入數據庫?

<form action="script.php" method="post"> 
<fieldset> 
    <input id="name" type="text" placeholder="name" /> 
    <input type="submit" value="Opslaan" />   
</fieldset> 
</form>​  

難道我仍然使用所有這些嗎?

$name= $_POST['name']; 
$name = stripslashes($name); 
$name = mysql_real_escape_string($name); 

mysql_connect($host,$username,$password); 
@mysql_select_db($database) or die("Unable to select database"); 
$query = "INSERT INTO names VALUES ('','$name')"; 
mysql_query($query); 
mysql_close(); 

因爲我這樣做的時候,劇本只有輸入ID,姓名欄爲空..

編輯:如何使用PDO或mysqli的PHP 5中(按最新標準)?

+0

首先不要使用mysql_ *,因爲它在PHP 5.5上不推薦使用。你要求最好的方法,用準備好的語句使用PDO或MySQLi。 – Prix

回答

2

你需要你的名字輸入到具有名稱屬性=「名稱」,即。

<input type="text" id="name" name="name" placeholder="Enter your name" /> 

要完全解決您的答案。

  • mysql_ *庫在最新的PHP上不推薦使用,也不應使用。改爲使用PDO或MySQLi。感謝Prix指出了這一點。
  • 您需要清理用戶提供的數據。這個問題以前有人問,在這裏一個很好的答案存在:What's the best method for sanitizing user input with PHP?
  • 您_POST參數沒有你的名字輸入做任何事情的原因是由於這是上面提到的事實。
+1

參見:[在HTML代碼與名稱之間的區別屬性(http://stackoverflow.com/q/1397592/2359271) – Air

+1

一無所知的mysqli或PDO? – Davit

+0

偉大的工作出色! PHP5中仍然需要stripslashes($ name)和mysql_real_escape_string($ name)操作嗎? – atMaarten

0

佔位符attribut允許在HTML 5中將默認值放置在窗體的元素中。當元素具有焦點時,此默認值將被刪除。但在你的情況下,你忘記了attribut的名字。試試這個:

<form action="script.php" method="post"> 
<fieldset> 
    <input id="name" name="name" type="text" placeholder="Enter your name" /> 
    <input type="submit" value="Opslaan" />   
</fieldset> 
</form>​