SQL/Wordpress/AJAX:使用循环格式化 JSON
Posted
技术标签:
【中文标题】SQL/Wordpress/AJAX:使用循环格式化 JSON【英文标题】:SQL/Wordpress/AJAX : Format JSON With Loop 【发布时间】:2016-06-13 23:14:19 【问题描述】:问题
我正在尝试查询我的数据库(wp_usermeta 表)并将其导出为 JSON 格式以供自动完成插件处理。我需要将数据格式化为:
"suggestion":"copmany1", "umeta_id":"1","suggestion":"company2", "umeta_id":"2", etc.
到目前为止
我当前的代码输出信息如下:
"suggestions":["concept9 test","Company"],"data":["58","77"]
这是我的代码:
$query = $_GET["query"];
// escape values passed to db to avoid sql-injection
$query = $wpdb->get_results( "SELECT DISTINCT umeta_id, meta_value FROM wp_usermeta WHERE meta_key='company' AND meta_value LIKE '".$query."%' order by umeta_id" );
$suggestions = array();
foreach($query as $row)
$suggestions[] = $row->meta_value;
$data[] = $row->umeta_id;
$response1 = array(
'suggestions' => $suggestions,
'data' => $data,
);
$response = json_encode( $response1 );
echo $response;
exit();
谢谢!
【问题讨论】:
【参考方案1】:试试这样:
$query = $_GET["query"];
// escape values passed to db to avoid sql-injection
$query = $wpdb->get_results( "SELECT DISTINCT umeta_id, meta_value FROM wp_usermeta WHERE meta_key='company' AND meta_value LIKE '".$query."%' order by umeta_id" );
$suggestions = array();
foreach($query as $row)
array_push($suggestions, array(
'suggestion' => $row->meta_value,
'umeta_id' => $row->umeta_id
)
);
echo json_encode( $suggestions );
exit();
如果您需要进一步解释,请在此处评论
【讨论】:
嗨@Sasha89 - 感谢您的建议!不幸的是,这会产生空值。这可能是因为 foreach 循环将通过查询,而不是公司。由于 wp_usermeta 表的格式如下所示,也许我们需要在其中添加另一个循环:codex.wordpress.org/Database_Description#Table:_wp_usermeta ?谢谢! 你能在 foreach 中添加这一行并发布结果吗:var_dump($row);死; 这就是我得到的object(stdClass)#451 (2) ["umeta_id"]=> string(2) "58" ["meta_value"]=> string(13) "concept9 test"
这是我的预期,所以我不确定你为什么会得到“null”
天哪,你完全正确..正在输出旧数组。它现在应该可以工作了!我得到["suggestion":"concept9 test","umeta_id":"58","suggestion":"Company","umeta_id":"77"]
- 非常感谢!以上是关于SQL/Wordpress/AJAX:使用循环格式化 JSON的主要内容,如果未能解决你的问题,请参考以下文章