2011-11-24 133 views
0

我有我的代碼來更新我的MySQL數據庫,它正在運行,但是當我使用phpmyadmin檢查rcords時沒有更新數據庫。 plae hlp me。PHP嘗試更新MySQL數據庫不會更新

$database = "carzilla"; 

$con = mysql_connect("localhost","root",""); 
if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 

$manufacturerTable = $_POST[vehicleManufacturer]; 
$numberToSearch = $_POST[vehicleIdNo]; 
$engineType = $_POST[engineType]; 
$engineCC = $_POST[engineCC]; 
$year = $_POST[year]; 
$numberofDoors = $_POST[numberofDoors]; 
$tireSize = $_POST[tireSize]; 
$chasisNumber = $_POST[chasisNumber]; 
$vehicleMake = $_POST[vehicleMake]; 
$price=$_POST[price]; 

mysql_select_db("$database", $con); 

$sql = mysql_query("UPDATE $manufacturerTable SET username='vehicleMake', 
engineType='$engineType', engineCC='$engineCC', year='$year', chasisNo='$chasisNumber', numberOfDoors='$numberofDoors' ,numberOfDoors='$numberofDoors', tireSize='$tireSize', price='$price' WHERE `index` ='$id'"); 

if (!mysql_query($sql,$con)) 
{ 
die('Error: ' . mysql_error()); 
} 
echo 'record has been successfuly'; 

mysql_close($con); 


?> 
+5

老兄,你的PHP很容易受到SQL注入幾乎所有可能的方式。你*真*不應該像你那樣相信你的'$ _POST'。 – Romain

+2

你的查詢有一個'WHERE index ='$ id'',但我在你的代碼中看不到'$ id'。你真的想要更新一個現有的記錄,或者你想創建一個新的? – Romain

+0

需要看sql表結構 – Julien

回答

0

看看你的查詢好好看看來逃避所有的輸入是用戶輸入。您在同一語句中以多種不同方式引用PHP變量。在查詢中,$ manufacturerTable只是$ manufacturerTable,你用單引號括住了一些其他的,其中一些你刪除了$,另外一些你沒有。我知道我經常傳講這一點,但你應該真正考慮使用預先準備的語句。他們將所有的猜測工作都用在了查詢中的變量中,並且可以防止你被注入黑客攻擊。但是這裏的簡短答案是,你沒有在查詢中正確地引用你的變量。

-1

有時候將變量直接放在語法中可能會導致問題。你有沒有嘗試使用串聯的查詢。

$query = "UPDATE ".$manufacturerTable." SET username='vehicleMake', engineType='."$engineType."', engineCC='".$engineCC."', year='".$year."', chasisNo='".$chasisNumber."', numberOfDoors='".$numberofDoors."' ,numberOfDoors='".$numberofDoors."', tireSize='".$tireSize."', price='".$price."' WHERE index =".$id; 

$sql = mysql_query($query); # this should be put in the if else 

如果索引是基於數字的,則不需要圍繞它。 Plus是用戶名='vehicleMake'或者它是一個變量。如果它是一個變量,則添加$或者像其他的一樣使用連接。你的SQL檢查應該如下所示。

if (mysql_query($query)) 
{ 
echo 'record has been successfuly'; 
} else { 
die('Error: ' . mysql_error() . ' | ' . $query); 
} 

原因您導出查詢,以便您可以手動嘗試,以確保它的工作原理,你可能會得到什麼錯誤。 phpMySQL可以顯示不同的錯誤,然後在次

的mysql_error()加上你應該使用函數mysql_escape_string()或mysql_real_escape_string()

+0

任何人投票贊成解釋。我有直接添加變量的問題,無需連接,具體取決於php/mysql版本 –

+0

爲什麼選擇投票? @詹姆斯威廉斯。感謝代碼。它的工作 – sammyukavi

+0

沒有downvote,但建議將'$ var =「blah $ var blah」'更改爲'$ var =「blah」。 $ var。 「等等」是毫無意義的。它們最終都會在$ var中得到完全相同的結果。你所做的所有事情都使得查詢字符串變得更加複雜,並且由於錯位引用而產生語法錯誤(在PHP **和** SQL中)的可能性更大。 –