Php SQL/Wordpress/AJAX:使用循环格式化JSON

Php SQL/Wordpress/AJAX:使用循环格式化JSON,php,mysql,json,ajax,wordpress,Php,Mysql,Json,Ajax,Wordpress,问题 我正在尝试查询我的数据库(wp_usermeta table),并将其导出为JSON格式,由自动完成插件处理。我需要将数据格式化为: {"suggestion":"copmany1", "umeta_id":"1"},{"suggestion":"company2", "umeta_id":"2"}, etc. {"suggestions":["concept9 test","Company"],"data":["58","77"]} 到目前为止 我的当前代码输出如下信息: {"sug

问题

我正在尝试查询我的数据库(wp_usermeta table),并将其导出为JSON格式,由自动完成插件处理。我需要将数据格式化为:

{"suggestion":"copmany1", "umeta_id":"1"},{"suggestion":"company2", "umeta_id":"2"}, etc.
{"suggestions":["concept9 test","Company"],"data":["58","77"]}
到目前为止

我的当前代码输出如下信息:

{"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();
谢谢

像这样试试:

$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();

如果您需要进一步解释,请在此发表评论

Hi@Sasha89-谢谢您的建议!不幸的是,这会产生null。这可能是因为foreach循环将遍历查询,而不是公司。由于wp_usermeta表的格式如下所示,我们可能需要在其内部使用另一个循环:?谢谢能否在foreach和post结果中添加这一行:var_dump($row);死亡这就是我得到的
object(stdClass)#451(2){[“umeta_id”]=>string(2)“58”[“meta_value”]=>string(13)“concept9 test”}
这就是我所期望的,所以我不确定为什么会得到“null”哦,天哪,你完全正确..正在输出旧数组。现在应该可以了!我得到了
[{“建议”:“概念9测试”,“umeta_id”:“58”},{“建议”:“公司”,“umeta_id”:“77”}]
-非常感谢!