我正在查看我的代码和我的结果,但没有看到任何明显的错误,所以我认为可能有一些额外的眼睛看起来很有用结束了。WordPress中的奇怪行为MySQL插入JSON编码数据
我有一个自定义的PayPal IPN侦听器,用于更新数据库中的事务表。我在离开工作前的星期五部署了它,今天返回后,它似乎正常工作主要是;但我想弄清楚为什么一个插入行为奇怪。
正如你可以看到,第四届交易log
列预期JSON值为空。我觉得很奇怪,因为transaction_id
列的值是从同一个数组中解析出来的。
下面是相关数据库insert
代码:
// Generate valid IPN log
private function generateIpnLog() {
global $wpdb;
// prepare log
$array_log = [];
$array_log['verified'] = true;
$array_log['ipn_response'] = (isset($this->PayPal_Response)) ? : 'Error reading from POST array';
// Parse transaction ID
$transaction_id = (isset($this->PayPal_Response['txn_id'])) ? $this->PayPal_Response['txn_id'] : null;
// Generate log
$log = json_encode($array_log);
// Update DB
$wpdb->insert(
'log_paypal',
[
'transaction_id' => ($transaction_id) ? $transaction_id : 'Error getting transaction ID',
'log' => ($log) ? $log : 'Error generating transaction log'
],
[
'%s',
'%s'
]
);
// json log response
$this->json_return = $log;
}
看到,因为事务ID解析罚款从PayPal的反应,因为我们知道$array_log['verified']
有一个显式声明价值我的猜测是,必须有一个问题与json_encode($array_log)
。
我还检查了贝宝IPN历史记录中有关PayPal账户的数据,并且可以验证数据在空值log
列与其他列中形成的方式没有任何不同。
任何人都知道在这种情况下会发生什么?
如果我这样做是正确,你可以看到'log'('$ array_log')应该在空行中?你应该编辑它,它非常相关。 – ishegg
@ishegg我不确定你的问题是什么,但如果你问我是否可以用IPN数据手动更新该行 - 是的,我可以,而且已经有了。但从长远来看,这显然没有帮助。 – DrewT
不,我的意思是,你可以手动重建'$ array_log',看看它为什么没有正确编码? – ishegg