Я уверен, что это что-то действительно простое, вроде неуместной цитаты, но я совершенно в тупике. Я использую запрос на обновление, чтобы ввести данные корзины покупок в таблицу mysql, и у меня возникли серьезные проблемы с балансом карты. Столбец в таблице mysql называется BalanceCurrent и является десятичным (18,2). В моем php-коде (это пользовательский компонент Joomla, поэтому есть некоторые объекты и методы Joomla, такие как JFactory и quote), вот что я делаю:
$rightNow = date("YmdHis");
$db =& JFactory::getDBO();
$query = "update arrc_Voucher set BalanceCurrent = " . $db->quote(number_format($this->balanceRemaining,2)) . ", UpdateDT = ".$db->quote($rightNow). " where VoucherNbr = ".$db->quote($this->voucherNbr);
error_log("update query: ".$query);
$db->setQuery($query);
if (!$db->query()) error_log("error inside updateVoucher: ".$db->stderr());
Проблема заключается в следующем: $ db-> quote (number_format ($ this-> balanceRemaining, 2)). Без кавычек (созданных с помощью $ db-> quote вокруг значения) я получаю ошибку mySQL:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '950.00, UpdateDT = '20100813150330' where VoucherNbr = '1142100120514884'' at line 1 SQL=update arrc_Voucher set BalanceCurrent = 4,950.00, UpdateDT = '20100813150330' where VoucherNbr = '1142100120514884'
С кавычками нет ошибки, и это оператор SQL, который получается (выводится в error_log):
update query: update arrc_Voucher set BalanceCurrent = '4,950.00', UpdateDT = '20100813150508' where VoucherNbr = '1142100120514884'
Выглядит нормально, но проблема в том, что когда я вхожу в базу данных, поле BalanceCurrent теперь установлено на 4,00, а не на 4950,00.
Есть идеи? Это действительно убивает меня.