2012-09-17 182 views
1

所以我有php代碼插入表中的表單數據。代碼如下:PHP插入到mysql

$link = @mysql_connect("***", "***", "****"); 
if (!$link) { 
echo "save_failed"; 
return; 
} 
mysql_select_db("***", $link); 

$sql="INSERT INTO Conference (`First Name`, `Last Name`) 
VALUES ('$_POST[fname]', '$_POST[lname]')"; 

mysql_close($link); 

顯然,***被替換爲實際代碼中的實際值。但是上面的代碼有什麼問題嗎?我試圖運行它,它沒有任何連接錯誤,但它也沒有插入任何東西。以下是我的mysql表的樣子: Mysql table

此外,我需要該表具有一個自動遞增的數字,以便每個條目都是唯一的,並具有它自己的索引值。任何問題的任何想法?由於

+0

你生成的SQL是什麼樣的?如果你回顯'$ sql',它在數據庫中運行時是否工作? – andrewsi

+2

請停止使用古老的mysql_ *函數編寫新代碼。他們不再被維護,社區已經開始[棄用流程](http://news.php.net/php.internals/53799)。相反,您應該瞭解準備好的語句並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)。如果你關心學習,[這裏是一個很好的PDO相關教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 – DCoder

+0

這個例子有一個**嚴重的** [SQL注入漏洞](http://bobby-tables.com/php),應該立即修補。你不應該直接在你的查詢中插入'$ _POST'或'$ _GET'數據。 – tadman

回答

6

,因爲它遵循您還沒有執行的查詢,應做到:

mysql_query($sql, $link); 

另外,請考慮使用mysqli甚至更​​好PDOmysql包被棄用(見紅色框) ,即mysql_query()

+0

哇,我覺得真的很愚蠢。好的,完美的工作,謝謝。還有一件事,有沒有辦法讓自動遞增的ID號碼? – Richard

+0

從我在屏幕截圖中看到的內容中,您的表格中沒有「id」列。用下劃線替換空格也是一種很好的做法。 – Havelock

+0

是啊我試着把一個ID列,但沒有設置,使其自動增量。 – Richard