SQL - 根据另一列的值从一列中获取数据

时间:2017-03-03 02:01:07

标签: sql wordpress

我有一个WordPress数据库,其中包含一个名为usermeta的表,如下所示:

umeta_id | user_id | meta_key | meta_value
1        |    1    |first_name| Matt    
2        |    1    |   dob    | 1970-01-15
3        |    1    |  dl_num  | 10569788658
4        |    2    |first_name| Jim
5        |    2    |   dob    | 1985-07-29
6        |    2    |  dl_num  | 16578984258

如果meta_key是'dl_num'并且需要SQL查询来执行此操作,我需要获取特定用户的meta_value。

我做的是这样的事情:

SELECT meta_value FROM usermeta WHERE user_id = 1 AND meta_key LIKE 'dl_num'

我将其与Wordpress中的其他代码一起使用,将我的数据打印到.csv报告中,并且不会提取数据。

这是我的一段代码:

case 'dl_num':
                        if ( $report_user instanceof WP_User ) {
                            $user_id2 = $report_user->ID;
                        }
                        if ( property_exists( $report_item, 'post_id' ) ) {
                            $post_id2 = $report_item->post_id;
                        }

                        global $wpdb;

                        $myRows = $wpdb->get_row( "SELECT meta_value FROM ".$wpdb->prefix."usermeta WHERE user_id = ".$user_id2." AND meta_key LIKE 'dl_num'");

                        $column_value = $myRows;
                    break;

有人可以查看我的SQL查询,看看我是否遗漏了什么?

1 个答案:

答案 0 :(得分:0)

我认为问题是查询中缺少空格:

$myRows = $wpdb->get_row("SELECT meta_value FROM ".$wpdb->prefix."usermeta WHERE user_id = ".$user_id2." AND meta_key LIKE 'dl_num'");

注意:

  • 您应该在构建后打印出查询。那么答案就很明显了。
  • 你应该使用参数,那么你就不会遇到这类问题。