Ben bu bir yanlış alıntı gibi gerçekten basit bir şey, emin değilim, ama tamamen stumped. Ben bir mysql tabloya alışveriş sepeti verileri girmek için bir güncelleştirme sorgusu kullanarak, kart ve denge ile bazı büyük sorunlar yaşıyorum. Mysql tabloda sütun BalanceCurrent denir ve bir ondalık (18,2) bulunuyor edilir. Benim php kodu (bu özel bir Joomla bileşeni, bu nedenle bazı Joomla nesneler ve jFactory ve alıntı gibi yöntemler vardır), burada ben ne yapıyorum:
$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());
Sorun şudur: $ db-> alıntı (number_format ($ this-> balanceRemaining, 2)). (Değeri yaklaşık $ db-> alıntı ile oluşturulan) tırnak işaretleri olmadan ben bir mySQL hatası alıyorum:
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'
Tırnak ile, hiçbir hata, ve bu sonuçlar (error_log yazdırılan) o SQL deyimi:
update query: update arrc_Voucher set BalanceCurrent = '4,950.00', UpdateDT = '20100813150508' where VoucherNbr = '1142100120514884'
Bu güzel görünüyor, ama aslında veritabanına giderken sorun olduğunu BalanceCurrent alanı şimdi 4,00, değil 4950.00 ayarlanır.
Herhangi bir fikir? Bu beni gerçekten öldürüyor.