首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将json插入mysql数据库wp / php -数字、字符串和时间戳

如何将json插入mysql数据库wp / php -数字、字符串和时间戳
EN

Stack Overflow用户
提问于 2020-06-29 14:55:00
回答 1查看 705关注 0票数 0

我希望你能用以下方法指导我:

我正在向wordpress REST Api发送json中的http post请求,如下所示:

代码语言:javascript
复制
{"item1":26.62,"item2":319,"item3":4445,"payload":"0a66013f115d0001088f013c05", "timestamp": "2020-06-26 19:34:31", "device": "xx"}

现在,在php中,我可以将它存储在wordpress连接的mysql数据库中的一个自定义表中,如下所示:

代码语言:javascript
复制
function handle_post( WP_REST_Request $request ) {
global $wpdb;
$item = $request->get_json_params();$fields = array();
$values = array();
foreach($item as $key => $val) {
    array_push($fields, preg_replace("/[^A-Za-z0-9]/", '', $key));
    array_push($values, $wpdb->prepare('%f', $val));
}
$fields = implode(", ", $fields);
$values = implode(", ", $values);
$query = "INSERT INTO `tablename_xxx` ($fields) VALUES ($values)";
$list = $wpdb->get_results($query);

return $list;}
add_action( 'rest_api_init', function () {   register_rest_route( 'data/v1', '/005', array(     'methods' => 'POST',     'callback' => 'handle_post', ) );} );

我找到了这段代码,它可以工作,但这只是转换数字/浮动。如何继续包含包含字符串(数字和字母)的两个键值对。我该如何存储时间戳?此外,这些字符串和时间戳总是包括在内,具有值的“项目”的数量可能会有所不同。

接下来,是否可以使用其中一个对,即它的值,将其存储在(自定义)表中,并在表标题中匹配值?我能用变量吗?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-01 08:46:34

$wpdb->prepare('%f', $val)只应转换数字。

数字和字符串之间应该有一些区别。例如,您预先知道要转换为数字的字段中的哪些字段,以及希望转换为字符串的字段,即使这些字段恰好是纯数字(例如,“有效载荷”可能是纯数字,但仍然希望将其保存为字符串)。

代码语言:javascript
复制
$fieldTypes = [
    "item1"     => '%f',
    "item2"     => '%f',
    "item3"     => '%f',
    "payload"   => '%s'
    "timestamp" => '%s',
    "device"    => '%s'
];

然后,在foreach循环中,而不是$wpdb->prepare('%f', $val)中,使用:$wpdb->prepare($fieldTypes[$key], $val)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62640860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档