2012-06-27 43 views
-2

我敢肯定,這是非常基本的,但我是新來的PHP。有人能告訴我爲什麼這段代碼不會寫入表格嗎?我只是想讓表單更新數據庫中的表。除了表格中的數據沒有被覆蓋以外,Everthing可以工作。任何幫助將不勝感激!謝謝。PHP腳本發佈到數據庫不工作

<?php 
$username="username"; 
$password="password"; 
$dbname="database"; 
$usertable="table"; 
$connect = @mysql_connect($hostname, $username, $password)or die 
("cannot connect to db"); 
mysql_select_db($dbname); 

$show=$_POST['show']; 
$pro=$_POST['pro']; 
$twmo=$_POST['twmo']; 


mysql_query("INSERT INTO $usertable VALUES 
('$show','pro','$twmo')"); 

mysql_close($connect); 
header("Location: http://www.myhomepage.com"); 

?> 
+0

我開始從連接函數中刪除'@'前綴,以便您可以看到它可能拋出的任何警告。此外,作爲一個旁白,您應該沒有隱瞞您的'$ _POST'變量 - 此時您有一個SQL注入漏洞。最後,如果你的表名實際上是「表」,那麼可能需要引用,或者更好的是重命名,因爲它是一個SQL保留字。 – halfer

+0

你會想使用mysqli函數或PDO函數來代替mysql函數。 mysql函數已被棄用。 –

+1

這是一個好主意,用列命名規範來執行INSERT操作,所以如果你重新排列你的列,你的代碼仍然可以工作。 – halfer

回答

1

首先,

  • 您的代碼容易受到SQL注入。
    惡意用戶可以輕鬆清除整個表格。
  • 你甚至不應該使用mysql_*
    它被棄用和壞風格!去尋找mysqli或PDO的教程,從2008年

上的文章不轉發對於實際問題,嘗試一些調試自己。你不檢查你的任何查詢是否成功。當您執行查詢時,mysql_query()在失敗時返回資源或FALSE。檢查是否發生這種情況,以便找出錯誤發生的位置以及它使用的是什麼mysql_error()

如果您的表格實際上被稱爲table,那就是問題所在。 table是保留關鍵字。你可以用ticks封裝它,但是你應該改變它的名字。有一個名爲table的表沒有任何用處。調用它包含的內容。

+0

感謝您的快速響應並提供mysqli。我將開始尋找教程。就像fyi一樣,所有$字段都被重命名爲該帖子。 –