2010-03-12 84 views
1

我試圖插入有關項目的價格從一個HTML表單到MySQL數據庫中的數據。輸入字段的定義如下:將字符串轉換到MySQL DECIMAL類型

<input type="text" name="price" value="0.00"/> 

表單被髮送到數據庫內容被處理的下一頁。目前,我只需在數據庫字段中輸入$ _POST ['price']的確切內容,該字段的類型爲DECIMAL(4,2)。我聽說這是作爲一個字符串存儲的,但是當我嘗試這樣做時,數據庫會拋出一個錯誤。是否有一個PHP函數用於在字符串和MySQL DECIMAL類型之間進行轉換?或者我必須自己做一些格式化?

回答

3

您不應該只將「」輸入到$_POST['...']的確切內容「到任何數據庫字段中:它是打開SQL注入的門。

相反,你必須確保你注入SQL查詢的數據實際上是有效的,根據預期的DB數據類型。


對於小數,一個解決方案,在PHP端,將使用floatval功能:

$clean_price = floatval($_POST['price']); 
$query = "insert into your_table (price, ...) values ($clean_price, ...)" 
if (mysql_query($query)) { 
    // success 
} else { 
    echo mysql_error(); // To help, while testing 
} 

請注意,我沒有把任何報價角落找尋價值;-)

+1

如果我們要對'$ clean_price'執行任何運算,floatval()會導致精度的損失嗎?不確定PHP是否具有內置的十進制類型......但在這種情況下,對POST數據進行消毒並將其作爲字符串傳遞是不是更好? – pixelfreak 2012-06-10 03:51:52

相關問題