$wpdb->get_var在一个数据库检查中执行多个查询

时间:2014-09-28 作者:Richard

我正在使用$wpdb->get\\u var php代码在wp\\u usermeta表中获取记录的名字和姓氏。。。但由于字段值存储在同一个单元格中,我不知道如何将其合并为一个字符串。现在我是这样做的:

$_EmployeeFName = $wpdb->get_var( $wpdb->prepare("SELECT `meta_value` FROM `wp_usermeta` WHERE `meta_key` = \'first_name\' and `user_id` = %d ", $_REQUEST[\'empid\']));
$_EmployeeLName = $wpdb->get_var( $wpdb->prepare("SELECT `meta_value` FROM `wp_usermeta` WHERE `meta_key` = \'last_name\' and `user_id` = %d ", $_REQUEST[\'empid\']));
有没有一种方法可以从数据库中一次拉取就可以做到这一点?我不想做太多,为了从这么多的拉取中保存数据库。。。

但我不知道怎么做。

你呢?

谢谢Richard

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

为什么要进行自己的数据库查询?使用WP功能为您执行此操作。

$empid = (int) $_REQUEST[\'empid\'];
$name = get_user_meta($empid, \'first_name\', true) . \' \' . get_user_meta($empid, \'last_name\', true);

SO网友:Justin Bell

如果要执行检索一个字段但检索多个结果的单个查询(例如,为了避免往返数据库),最简单的解释是使用get_results() 相反

接受您的查询:

$wpdb->get_var( $wpdb->prepare("SELECT `meta_value` FROM `wp_usermeta` WHERE `meta_key` = \'first_name\' and `user_id` = %d ", $_REQUEST[\'empid\']))
。。。看看它与另一个领域的几乎相同:

$wpdb->get_var( $wpdb->prepare("SELECT `meta_value` FROM `wp_usermeta` WHERE `meta_key` = \'last_name\' and `user_id` = %d ", $_REQUEST[\'empid\']))
。。。我建议将它们合并到一个查询中:

$results = $wpdb->get_results($wpdb->prepare("
    SELECT `meta_key`, `meta_value`
        FROM `wp_usermeta`
        WHERE `meta_key` IN (\'first_name\', \'last_name\')
            AND `user_id` = %d;", $_REQUEST[\'empid\']));
您的$results 对象将是具有meta_keymeta_value 每个对象的属性。

然后,您可以按如下方式获取各个字段:

foreach($results as $rec) {
    switch($rec->meta_key) {
        case "first_name":
            $_EmployeeFName = $rec->meta_value;
            break;
        case "last_name":
            $_EmployeeLName = $rec->meta_value;
            break;
    }
}
使用get_results() 允许您不仅同时查询这两个选项,还可以区分这两个选项(提供meta_key 以及相应的meta_value).

结束

相关推荐

在没有MySQL错误的情况下将测试主题移动到实时站点-如何?

我在一个隐藏的测试站点上安装了wordpress主题,并对css/设计进行了一些更改。如何将其移动到我的live站点?遗憾的是,当我试图将帖子从实时站点复制到测试站点数据库时,我把一些PHP/MySQL的东西搞砸了,出现了一个非常可怕的重定向循环。我是否可以避免重蹈覆辙,或者我真的需要从头开始基本主题和定制?测试地点:http://173.254.28.65/~neveren2/thundercatsaremyhomeboys/ - 可怕的重定向循环-实时站点:http://www.neverenough