私のコードと私の結果の両方を見ていますが、目立ったエラーは見られないので、いくつか余分な目を見せておくと便利だと思いました終わった。WordPressの奇妙な動作JSONエンコードされたデータのMySQL挿入
データベース内のトランザクションテーブルを更新するカスタムPayPal IPNリスナーがあります。私は仕事を辞める前に金曜日にそれを配備しました。今日帰ってからはうまくいっているようです。ほとんどがです。なぜ私は1つのインサートが奇妙に動作したのかを理解したいと思います。ここで
あなたが見ることができるように、第四取引のlog
列の意図JSON値は空です。 transaction_id
列の値が同じ配列から解析されているので、私はそれが不思議です。ここで
insert
コードです:トランザクションIDとして見
// 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;
}
PayPalの応答から細かい解析され、そして、我々が知っているので$array_log['verified']
は私の推測では、問題がなければならないで明示的に宣言された値を持っていますjson_encode($array_log)
。
また、問題のPayPalアカウントのPayPal IPNの履歴からデータをチェックし、NULL log
列と他の列との間にデータが形成される方法に違いがないことも確認できます。
誰でもこのインスタンスで何が起こっているのか考えていますか?
私は右のそれを得た場合、あなたは 'log'(' $ array_log')が空の行にあったはずのものを知ることができましたか?それを編集する必要があります。それはかなり重要です。 – ishegg
@isheggあなたの質問は何か分かりませんが、IPNデータを手動で更新できるかどうかを尋ねている場合は可能です。しかし、それは明らかに長期的には役に立たない。 – DrewT
いいえ、私は '$ array_log'を手動で再構築して、正しくエンコードしなかったのを確認できますか? – ishegg