У меня есть таблица со столбцом заселенного по формуле:Почему математика сохраняется в базе данных MySQL?
if ($row['importfee'] > 0) {
$sum_total= $row['stock']*($row['cost']*($row['importfee']/100)+$row['cost']+$row['prepcost']);
print ($sum_total);
$total_price += $sum_total;
}else{
$sum_total= $row['stock']*($row['cost']+$row['prepcost']);
echo $sum_total;
$total_price += $sum_total;
}
напр. запас составляет 400, стоимость - 200, prepcost - 0 - выход - 80000 Этот столбец отображается как обычный текст, а не вход.
Следующая Я посылаю $ sum_total на скрытый вход для $ _POSTing:
<input name='totalcost[]' type='text' id='totalcost' value='<?php echo $sum_total ?>'>
отл. Выход 80000
Наконец я обновить свою базу данных:
$totalcost= $_POST['totalcost'];
$sql = "UPDATE $tbl_name2 SET
productname='".$productname[$i]."',stock='".$stock[$i]."',cost='".$cost[$i]."',maker='".$maker[$i]."',customer='".$customer[$i]."',department='".$department[$i]."',comment='".$comment[$i]."',reportdate='".$reportdate."',page='".$page[$i]."',importfee='".$importfee[$i]."',prepcost='".$prepcost[$i]."',totalcost='".$totalcost[$i]."*(".$cost[$i]."+".$prepcost[$i].");'
WHERE id='".$id2[$i]."'";
И я получаю прекрасный сюрприз в моей базе данных: отл. запись в базе данных [totalcost] 80000 * (200+);
Я ожидал, что запись будет [TotalCost] 80000.
Почему формула отправляется в базу данных, но не отражена в моей таблице? Как я могу отправить только значение 80000 без математики в базу данных? Я работаю на сервере WAMP на данный момент, если t имеет значение.
echo $ sql, и вы увидите, почему – nogad
Пожалуйста, не делайте таких запросов. Это зияющая дыра в безопасности. Не знаю, какой обработчик базы данных вы используете, но посмотрите «подготовленные запросы», пожалуйста, и используйте либо mysqli_, либо PDO. – junkfoodjunkie
И ваш код работает точно так, как должен - вот что вы ввели в столбец '[totalcost]': totalcost = '. $ Totalcost [$ i]. "* (". $ Cost [$ i]. «+». $ prepcost [$ i]. »);« Все это входит в столбец. – junkfoodjunkie