使用 php 从查询 mysql 创建名称和电子邮件

Posted

技术标签:

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

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

我的查询如下所示:

    $signups = "SELECT *
                FROM $wpdb->prefixrg_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->prefixrg_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 ) 但目前我得到了所有三分之三的对象。 【参考方案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 是一种弱类型语言。

【讨论】:

以上是关于使用 php 从查询 mysql 创建名称和电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP/MySQL 自动化电子邮件活动,不确定如何构建查询

从mysql查询php创建数组

如何使用php从xampp发送具有匿名名称的电子邮件

Mime 和 Office365

PHP 中的 MySQL 查询不再有效

MySQL 验证电子邮件记录