本地主机上的Wordpress 5.3.2和PHP 7.2。
我正在发送Twilio短信,并捕获来自Twilio的响应,它是JSON。
我想存储响应,因为其中包含各种各样的好东西,例如发送日期-时间戳记。
[当我创建一个测试文件,并使用print_r响应时,它是一个相当大的JSON对象。不知道我是否应该以11,568个字符发布在这里。这是部分输出(Acct值已稍作更改):
Twilio\Rest\Api\V2010\Account\MessageInstance Object
(
[_media:protected] =>
[_feedback:protected] =>
[version:protected] => Twilio\Rest\Api\V2010 Object
(
[_accounts:protected] =>
[_account:protected] => Twilio\Rest\Api\V2010\AccountContext Object
(
[_addresses:protected] =>
[_applications:protected] =>
[_authorizedConnectApps:protected] =>
[_availablePhoneNumbers:protected] =>
[_calls:protected] =>
[_conferences:protected] =>
[_connectApps:protected] =>
[_incomingPhoneNumbers:protected] =>
[_keys:protected] =>
[_messages:protected] => Twilio\Rest\Api\V2010\Account\MessageList Object
(
[version:protected] => Twilio\Rest\Api\V2010 Object
*RECURSION*
[solution:protected] => Array
(
[accountSid] => AC3365f6c6dddaac48edfb902a3e1b8688d
)
[uri:protected] => /Accounts/AC3365f6c6dddaac48edfb902a3e1b8688d/Messages.json
)
[_newKeys:protected] =>
(etc., etc...)
我的测试代码如下:
$data['numbers'] = array( "9541234567");// phone numbers of sms recipients. Just one for now.
$count = array();
for($i=0;$i<count($data['numbers']);$i++){
$args = array(
'number_to' => $data['numbers'][$i],
'message' => "This is a test.\n",
);
$sent = twl_send_sms( $args );
echo "<pre>";
print_r($sent);//This line outputs that beautiful, robust JSON string I am after.
echo "</pre>";
}
...到目前为止,太好了。 Twilio短信发送,并且Twilio给了我一个JSON格式的不错的大型响应。
现在,我将代码传输到更大的生产环境中,我想捕获该11568个字符的JSON对象,并将其存储在表中(通过更新)。我认为它应该是TEXT类型,可能是正确的。
这是我对生产进行的稍微修改的代码:
$data['twilio_response'] = twl_send_sms( $args ); //This sends the sms, captures a Twilio response into an array element.
$table = $wpdb->prefix . "npf_notifications";
$data['notification-update'] = $wpdb->update(
$table,
array('twilio_response' => $data['twilio_response']),
array('id' => $data['notifications-insert']['id']),
array('%s'),
array('%s')
);
$data['notification-update-query'] = $wpdb->last_query; // this records the query in an array element, so I can examine it.
[不幸的是,我没有从测试脚本中得到像原始JSON那样完整的东西。相反,我的Twilio响应JSON如下所示:
notification-update-query = UPDATE `xsdslp_npf_notifications` SET `twilio_response` = '[Twilio.Api.V2010.MessageInstance accountSid=AC3365f6c6dceec35edfb902a3e1b8688d sid=SMfeb33b00895e455091445e4901547e70]' WHERE `id` = '5e092437a6037_1577657399'
...以及我为其分配Twilio响应数据的array元素的值看起来像(在使用javascript打印出来之后:]]
$data['twilio_response'] = [Twilio.Api.V2010.MessageInstance accountSid=AC3365f6c6ddaac48edfb902a3e1b8688d sid=SMfeddaac485e455091445e4901547e70]
似乎不是MySQL更新(或插入)的问题,但是JSON响应字符串在我的数组元素变量中已缩短。有人可以告诉我我在做什么错吗?
Wordpress 5.3.2和localhost上的PHP 7.2。我正在发送Twilio短信,并捕获来自JSON的Twilio的响应。我想存储响应,因为其中包含各种各样的好东西,例如...
看起来您首先需要在$ data ['twilio_response']上使用json_encode(),因为twl_send_sms返回的对象不是JSON字符串,而是PHP对象。另外,您可以使用serialize()