Я пытаюсь вставить данные о цене элемента из HTML-формы в базу данных mySQL. Поле ввода определяется следующим образом:
<input type="text" name="price" value="0.00"/>
Форма отправляется на следующую страницу, в которой позаботится материал базы данных. В настоящее время я просто вводил точное значение $ _POST ['price'] в поле базы данных, которое имеет тип DECIMAL (4,2). Я слышал, что это было сохранено в виде строки, но при каждой попытке сделать это база данных выдает ошибку. Есть ли функция PHP для преобразования строк и типа MySQL DECIMAL? Или мне нужно будет сделать какое-то форматирование?
Вы никогда не должны просто « вводить точное содержимое $_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 }
Обратите внимание, что я не ставил никакой цитаты вокруг значения 😉