【发布时间】:2011-05-25 23:08:01
【问题描述】:
代码点火器正在吐出:
A Database Error Occurred
Error Number: 1064
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 'TEST, `cardNumber` = 411111........11, `cardExpiry` = 1212, `authCode` = 110200,' at line 1
UPDATE `pxpayRequest` SET `status` = 'approved', `cardName` = Visa, `cardHolder` = VISA TEST, `cardNumber` = 411111........11, `cardExpiry` = 1212, `authCode` = 110200, `dpsTxnRef` = 0000000800b51dde, `dpsMessage` = APPROVED WHERE `id` = 1
而且,很明显,这是由于缺少 ' 集
为什么 code igniter 没有正确放入这些?
这是我的代码:
$id = $result->MerchantReference;
$cardName = $result->CardName;
$cardHolder = $result->CardHolderName;
$cardNumber = $result->CardNumber;
$cardExpiry = $result->DateExpiry;
$authCode = $result->AuthCode;
$dpsRef = $result->DpsTxnRef;
$dpsMessage = $result->ResponseText;
$this->db->set('status', 'approved')
->set('cardName', $cardName)
->set('cardHolder', $cardHolder)
->set('cardNumber', $cardNumber)
->set('cardExpiry', $cardExpiry)
->set('authCode', $authCode)
->set('dpsTxnRef', $dpsRef)
->set('dpsMessage', $dpsMessage)
->where('id', $id)
->update('pxpayRequest');
您可以通过查看上面的查询来查看关联的值。
这是 $result 的print_r
SimpleXMLElement Object
(
[@attributes] => Array
(
[valid] => 1
)
[Success] => 1
[TxnType] => Purchase
[CurrencyInput] => NZD
[MerchantReference] => 1
[TxnData1] => SimpleXMLElement Object
(
)
[TxnData2] => SimpleXMLElement Object
(
)
[TxnData3] => SimpleXMLElement Object
(
)
[AuthCode] => 121132
[CardName] => Visa
[CardHolderName] => VISA CARD
[CardNumber] => 411111........11
[DateExpiry] => 1212
[ClientInfo] => 125.236.220.238
[TxnId] => 4ddd9aa1dd14c
[EmailAddress] => SimpleXMLElement Object
(
)
[DpsTxnRef] => 0000000800b5d3c9
[BillingId] => SimpleXMLElement Object
(
)
[DpsBillingId] => SimpleXMLElement Object
(
)
[AmountSettlement] => 8.00
[CurrencySettlement] => NZD
[DateSettlement] => 20110526
[TxnMac] => BD43E619
[ResponseText] => APPROVED
[CardNumber2] => SimpleXMLElement Object
(
)
[IssuerCountryId] => 0
)
【问题讨论】:
-
应该是逃逸了,你需要在DB驱动的源码中做一个快速调试,看看哪里出了问题。 Set() 在 /system/database/DB_active_rec.php 中(确保它遵循在 $value 上调用 $this->escape() 的正确流路径),它应该从 /system/database 调用 escape() /DB_driver.php 的工作是在值周围添加引号
标签: php mysql sql codeigniter