使用 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 创建名称和电子邮件的主要内容,如果未能解决你的问题,请参考以下文章