Bir mySql DECIMAL'ın bir dize dönüştürme

1 Cevap php

Ben bir mySQL veritabanına bir HTML formundan bir öğenin fiyatı hakkında veri eklemek çalışıyorum. Aşağıdaki gibi girdi alanı tanımlanır:

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

Form veritabanı şeyler halledilir olduğu sonraki sayfaya POSTed edilir. Şu anda sadece DECIMAL (4,2) tipi vardır, hangi veritabanı alanına $ _POST ['fiyat'] tam içeriğini girin. Ben bu bir dize olarak saklanan ama denemek ve bunu her veritabanı bir hata atıyor olduğunu duydum. Dizeleri ve MySQL DECIMAL'ın arasında dönüştürmek için bir PHP işlevi var mı? Ya da ben biraz kendimi biçimlendirme yapmak zorunda olacak?

1 Cevap

Sadece herhangi bir veritabanı alanına "enter the exact contents of $_POST['...'] " asla: bir kapı SQL Enjeksiyon açıldı bulunuyor.

Bunun yerine, size beklenen DB veri türleri göre, emin SQL sorguları içine enjeksiyon olan veri aslında geçerlidir yapmalısınız.


For decimals, a solution, on the PHP side, would be to use the floatval function :

$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
}

Ben değerin etrafında herhangi bir alıntı koymadı unutmayın ;-)