2010-03-12 2 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 
} 

Обратите внимание, что я не ставил какую-либо цитаты Arround значения ;-)

+1

Не будет ли floatval() вызывать некоторую потерю точности, если мы должны выполнить любую арифметику на '$ clean_price'? Не уверен, что PHP имеет встроенный десятичный тип ... но в этом случае лучше ли было бы дезинфицировать данные POST и передать его в виде строки? – pixelfreak

Смежные вопросы