如何从自定义WordPress数据库表中检索wp_json_encode数据

时间:2018-02-01 作者:Minesh

我已经在前端帖子提交页面中创建了动态添加/删除字段。我使用wp_json_encode$wpdb->insert 将数据插入我的自定义WordPress数据库表。系统工作正常。

数据存储在我的自定义表的“reward\\u details”列中。。它看起来像:

{"reward_amount":["500","250","20000","3000"],"reward_title":["Horse","Cat","Tiger","Monkey"],"reward_description":["Horse Home","Cat Home","Tiger Home","Monkey Home"]}
但是,我无法使用检索和显示数据json_decode. 以下是我的代码:

<?php $project_id = $_SESSION[\'project_id\']; global $wpdb; $string = $wpdb->get_results( "SELECT reward_details FROM wpxa_rewards WHERE project_id = $project_id" );

  $someArray = json_decode($string, true);

    $count = count( $someArray );
    for ( $i = 0; $i < $count; $i++ ) { ?>

<div class="panel panel-default">
  <div class="panel-body">
     <?php echo $someArray[$i]["reward_title"]; ?>
  </div>
</div>

 <?php } ?>
我想动态检索和显示数据…Plz帮助…

2 个回复
最合适的回答,由SO网友:Minesh 整理而成

您好,感谢您宝贵的支持。。。我找到了解决办法。见下文:

<?php $project_id = $_SESSION[\'project_id\']; $query = $wpdb->prepare( "SELECT reward_details FROM wpxa_orocox_rewards WHERE project_id = %d", $project_id );

$string = $wpdb->get_var( $query );

$someArray = json_decode( $string, true );

    $count = count( $someArray[\'reward_title\'] );
    for ( $i = 0; $i < $count; $i++ ) { ?>

<div class="panel panel-default">
  <div class="panel-body">
     <?php echo $someArray["reward_amount"][$i]; ?>
     <?php echo $someArray["reward_title"][$i]; ?>
     <?php echo $someArray["reward_description"][$i]; ?>
  </div>
</div>

<?php } ?>

SO网友:Jacob Peattie

$wpdb->get_results() 返回表示结果的行数组。根据第二个参数,行本身可以表示为对象或数组。

请参见documentation:

output_type
四个预定义常量之一。默认为对象。有关详细信息,请参见选择行及其示例。

对象-结果将作为行对象的数字索引数组输出

  • OBJECT\\u K-结果将输出为行对象的关联数组,使用第一列的值作为键(重复项将被丢弃)reward_details 包含JSON的。

    因此,在不更改查询的情况下,您可以通过以下方式访问JSON:

    $someArray = json_decode( $string[0]->reward_details, true);
    
    关键在于$string[0]->reward_details. 这就是价值所在。

    wpdb 有一种更好的方法来获取这样的单个单元格,称为get_var():

    $query = $wpdb->prepare( 
        "SELECT
            reward_details
        FROM 
            wpxa_rewards 
        WHERE 
            project_id = %d
        ", 
        $project_id
    );
    
    $string = $wpdb->get_var( $query );
    
    $someArray = json_decode( $string );
    
    get_var() 基本上[0]->reward_details 为你分道扬镳。

    还请注意,我使用了$wpdb->prepare 用于将项目ID插入查询。您不应该像在原始查询中那样将用户数据直接放入查询中。

  • 结束

    相关推荐

    我无法从wp_db获取json数据

    我正在尝试从wp\\U表中获取数据。但查询显示为空。若我试图得到整数值,那个么输出就来了。例如,如果我尝试获取数据整数类型,如user\\u id,则查询显示输出。但试图获取varchar数据时显示为null。例如,我想从我的表数据中获取产品数据,数据格式为json“[{“product\\”:“my PRODUC5\\”},{“product\\”:“product 2\\”}]”。我的sql查询是。$user1 = $wpdb->get_results(\"SELECT * FROM diary