【问题标题】:Create name and email from query mysql using php使用 php 从查询 mysql 创建名称和电子邮件
【发布时间】:2016-04-15 21:11:21
【问题描述】:

我有一个在字段编号和值字段下存储数据的表。我正在尝试以数组或对象格式获取记录,但无法做到这一点。

我的查询如下所示:

    $signups = "SELECT *
                FROM {$wpdb->prefix}rg_lead_detail
                WHERE 
                (form_id = '7' AND CAST(field_number AS DECIMAL) = CAST(1.3 AS DECIMAL)) OR
                (form_id = '7' AND CAST(field_number AS DECIMAL) = CAST(1.6 AS DECIMAL)) OR
                (form_id = '7' AND field_number = '5')

                ";

    $getappt = $wpdb->get_results($signups);
    foreach ($getappt as $value) { 

    //echo "<pre>";print_r($value);echo "</pre>";
    echo '<pre>'.$value->value;
    $email = $value->value;
}

它的打印结果是这样的 输出:

stdClass Object
(
    [id] => 10355
    [lead_id] => 423
    [form_id] => 7
    [field_number] => 1.3
    [value] => Bruce
)
stdClass Object
(
    [id] => 10356
    [lead_id] => 423
    [form_id] => 7
    [field_number] => 1.6
    [value] => Faber
)
stdClass Object
(
    [id] => 10357
    [lead_id] => 423
    [form_id] => 7
    [field_number] => 2.1
    [value] => 40 Harmony Lane
)

此查询有两个问题,首先它获取针对form_id =7 的所有记录,而不是字段field_number (2) 我如何将前3 个对象数组设置为一个数组,以便我可以通过电子邮件获取用户名。第一个对象数组有名字值,第二个对象数组有姓氏值和第三个电子邮件。 使用此查询解决了第一个问题。

"SELECT *
                FROM {$wpdb->prefix}rg_lead_detail
                WHERE 
                (form_id = '7' AND FORMAT(field_number,2) = FORMAT(1.3,2)) OR
                (form_id = '7' AND FORMAT(field_number,2) = FORMAT(1.6,2)) OR
                (form_id = '7' AND field_number = '5')

            "

【问题讨论】:

  • 第二张图带来了什么?请写一个更好的问题
  • 为什么不用lead的值作为key来组合用户数据呢?您可以稍后使用 array_values() 将其剥离。
  • @syck 如果我使用 group by 和lead id,那么它只返回返回第一个值数组。
  • 我将尝试在答案中进行解释。但我不明白为什么你删除了表格示例并第二次输入查询,以及我不明白未签名的第一条评论。我从未在那个问题中看到过第二张图片。
  • @syck 我试图添加数据库结构和值的图片但无法这就是我删除它的原因。我获取值唯一的问题是将值组合到一个数组中,例如 (fname,lname,email ) 但目前我得到了所有三分之三的对象。

标签: php mysql arrays wordpress


【解决方案1】:
$getappt = $wpdb->get_results($signups);
$list = array();
foreach ($getappt as $data) { 
    $list[$data->lead_id]['f'.$data->field_number] = $data->value;
}

var_dump($list);

会给你一个双键数组,它的第一个键是lead的值,从而将单个客户的数据组合成一个子数组。它应该包含类似

array(
    423 => array(
        'f1.3' => 'Bruce',
        'f1.6' => 'Faber',
        'f2.1' => '40 Harmony Lane',
    )
)

前缀 f 是为了 PHP 不会将字段编号截断为整数。我相信这无论如何都不会发生,但我没有尝试。毕竟 PHP 是一种弱类型语言。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-20
    • 2016-11-29
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    相关资源
    最近更新 更多