php - 数据库查询返回字段以一种顺序,我想以另一种顺序显示它们

标签 php mysql

这可能已经得到解答(或者应该是基础知识),所以请原谅菜鸟问题......

我正在使用 WP user_meta 数据库来存储用户的高级属性。

数据按以下顺序存储(这都是针对 userid=15 的):

city = Altoona
state = PA
phone = 9999999999
name = Fred

I want to generate the output as
Fred, Altoona, PA, 9999999999

以下是相关的 PHP 代码:

 $my_exportlist = $wpdb->get_results("SELECT `user_id` FROM `wp_m_membership_relationships` WHERE `level_id` = '2' ");
foreach ($my_exportlist as $duser) {

$my_stationinfo = $wpdb->get_results("SELECT * FROM `wp_usermeta` WHERE `meta_key` IN ('name', 'city', 'state', 'office') AND user_id ='$duser->user_id'");

foreach ($my_stationinfo as $myinfo) {
    $csv_output .= $myinfo->meta_value . ",";
    }
$csv_output .= "\n";
}

在第一个答案之后,我这样做了:

$my_stationinfo = $wpdb->get_results("GROUP_CONCAT(meta_value) val_output
        FROM `wp_usermeta`
        WHERE `meta_key` IN ('name', 'city', 'state', 'office') AND user_id ='$duser->user_id'
        ORDER BY FIELD(meta_key, 'name', 'city', 'state', 'office'");

我收到此错误消息...

WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_CONCAT(meta_value) val_output FROM `wp_usermeta` WHERE `meta_key' at line 1]

在查看了一些问答和链接的 mySQL 指令后,我仍然感到困惑......

进一步跟进: 这是当前代码

   $my_exportlist = $wpdb->get_results("SELECT `user_id` FROM `wp_m_membership_relationships` WHERE `level_id` = '2' ");
foreach ($my_exportlist as $duser) {

$my_stationinfo = $wpdb->get_results(
    "SELECT GROUP_CONCAT(meta_value) val_output
        FROM   wp_usermeta 
        WHERE  meta_key IN ('primary_calls', 'city', 'state', 'office', 'contact_emerg', 'contact_routine', 'contact_backup', 'contact_billing', 'contact_eng', 'contact_web', 'contact_prod', 'contact_traffic') AND
               user_id = '$duser->user_id'
               ORDER BY FIELD(meta_key, 'primary_calls', 'city', 'primary_calls','state', 'office', 'contact_emerg', 'contact_routine', 'contact_backup', 'contact_billing', 'contact_eng', 'contact_web', 'contact_prod', 'contact_traffic')");
print_r($my_stationinfo);
var_dump($my_stationinfo);
echo $my_stationinfo->val_output[0] ;


foreach ($my_stationinfo as $myinfo) {

    $csv_output .= $myinfo;
}
$csv_output .= "\n";

结果:

Array ( [0] => stdClass Object ( [val_output] => Altoona,PA,814.943.8112,WRTA ) )


array
  0 => 
    object(stdClass)[5]
      public 'val_output' => string 'Altoona,PA,814.943.8112,WRTA' (length=28)


Notice: Trying to get property of non-object in D:\Users\Dev\Documents\Websites\contract.dev\wp-content\plugins\custom_plugin\index_page.php on line 40

Catchable fatal error: Object of class stdClass could not be converted to string in D:\Users\Dev\Documents\Websites\contract.dev\wp-content\plugins\custom_plugin\index_page.php on line 45

最佳答案

使用GROUP_CONCAT()

SELECT GROUP_CONCAT(meta_value) val_output
FROM   wp_usermeta 
WHERE  meta_key IN ('name', 'city', 'state', 'office') AND 
        user_id = '$duser->user_id'
ORDER BY FIELD(meta_key, 'name', 'city', 'state', 'office')

关于php - 数据库查询返回字段以一种顺序,我想以另一种顺序显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19058860/

相关文章:

php - 如何在 Laravel 中创建模型?

PHP查询MySql表2行之间的差异

php - 如何在 PHP 中创建对象列表或数组?

php - Magento 中cataloginventory_stock_status_idx 和cataloginventory_stock_status_tmp 的用途是什么

php - 使用距离连接两个表的结果

php - 如何使用两个 foreach 和具有特定 ID 的内部 foreach 循环 - laravel 4

php - 从 MySql Android 中的多个表中获取数据

mysql - Hibernate 中最简单的一对多映射案例在 MySQL 中不起作用

php - 将数据库项目添加到 php 表单

php - Codeigniter 查询时间和自定义文件日志记录