使用 PHP 和 MySQL 创建多维数组

2024-03-23

我是 PHP 新手,正在寻找从数据库返回数据的有效方法。假设我有一个 UserProfile 表,它与 UserInterest 和 UserContact 具有一对多关系:

Select p.Id, p.FirstName, p.LastName, i.Name as Interests, c.Email, c.Phone
from UserProfile p
left join UserInterest i on p.Id = i.UserProfileId
left join UserContact c on p.Id = c.UserProfileId
where p.Id = 1

检索数据的有效方法是创建多维数组,例如:

$user = array(  "FirstName" => "John", 
                "LastName" => "Doe", 
                "Gender" => "Male", 
                "Interests" => array(
                    "Hiking", 
                    "Cooking"), 
                "Contact" => array(
                    "Email" => "[email protected] /cdn-cgi/l/email-protection", 
                    "Phone" => "(555) 555-5555"));

我似乎无法理解如何用 PHP 构建它。对于像兴趣这样的简单数据,我可以在查询中使用 group_concat(i.Name) 作为兴趣,以将兴趣作为单行中的逗号分隔列表返回,但是,对于诸如联系人之类的关联数组,我希望能够使用 $user['Contact']['Email'] 获取数组中每个键的句柄。

从“最佳实践”的角度来看,我认为在一个查询中构建这样的数组比多次访问数据库来检索该数据要好得多。

Thanks!

Neil


您可以通过查询返回的数据一次性构造此数组。在伪代码中:

for each row
     $user["FirstName"] = row->FirstName;
     $user["LastName"] = row->LastName;
     $user["Interests"][] = row->Interests;
     $user["Contact"]["Email"] = row->Email;
     $user["Contact"]["Phone"] = row->Phone;
next

语法$user["Interests"][] = $data是有效的 PHP 代码。它相当于array_push($user["Interests"], $data).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP 和 MySQL 创建多维数组 的相关文章

随机推荐

  • Python pandas系列:将浮点数转换为字符串,保留空值

    转换为字符串后如何保留空值 我正在处理社会安全号码 需要在浮点数和字符串之间来回切换 import pandas as pd import numpy as np x pd Series np nan 123 np nan 456 dtyp
  • 如何使用phpmyadmin导出所有数据库

    可以使用phpMyadmin一次性导出所有数据库吗 如果不是 最好的方法是什么 提前致谢 以下是使用 phpMyAdmin 导出所有 mySQL 数据库的步骤 2015 年 12 月 随着 phpMyAdmin 的发展 添加了新功能 打开
  • 当 setup.py 使用 Python 版本 3 解释器运行时,如何构建 py2 轮包?

    我有一个应该是 Python 的包仅版本 2但需要构建运行版本 3 解释器 The setup py这个包的内容看起来像点击 from setuptools import setup setup python requires lt 3 0
  • “编辑前 200 行”不适用于 SQL Server 16.0 - Express Edition

    我正在尝试在 SQL Server Express 版本中 编辑前 200 行 但它返回的是空白文件 如下所示 显示带有禁用工具的空白文件 https i stack imgur com CvpH7 png 我已经在本地安装了这个 SQL
  • 将渐变效果应用于模糊视图

    如何在 Swift 中添加具有模糊效果的渐变视图 我可以很轻松地向视图添加渐变层 CAGradientLayer 我还可以单独添加模糊视图 UIVisualEffectView 如何将两者结合起来创建一个模糊视图 该视图还具有渐变元素 其中
  • 当我单击画布并拖动鼠标时,光标会变为文本选择光标。我怎样才能防止这种情况发生?

    这是一个小提琴 http jsfiddle net MZ9Xm http jsfiddle net MZ9Xm 注意 以下情况发生在 Chrome 22 0 1221 1 中 但不会发生在 Firefox 14 0 1 中 Ubuntu l
  • Java 随机崩溃(可能的罪魁祸首:ntdll.dll?)

    我有一个用 Java 编写的程序 并使用 Windows 任务计划程序设置为每 5 分钟运行一次 它执行 C Program Files Java jre7 bin javaw exe 并传递 jar 文件和所有命令行参数 在大多数情况下
  • 如何安全地镜像 git 存储库?

    我想通过后台作业镜像一些 git 存储库 git clone mirror and git remote update不会保留通过强制推送未引用的对象 但我也想保留这些对象以防黑客攻击 有没有什么工具可以执行安全的 git 镜像 虽然缺少
  • Tone.PitchShift 和 Howler.js 问题

    我喜欢在我的 Meteor 应用程序中使用 Howler js 然而 播放速率功能导致了我不想要的音调变化 我只想延长时间 并保持音调 因此 我的解决方案是对其进行音调变换以 纠正 音调 看起来很简单 这就是我选择使用的原因https to
  • 在 Qt 中显示 QImage 的灰度并调整其大小

    我已经能够使用如下内容在 Qt 中的标签中显示图像 transformPixels 0 0 1 imheight imwidth 1 sets unsigned char imageData unsigned char fullCharAr
  • 与Netty相比,vert.x如何实现卓越的性能?

    最近的TechEmpower 性能基准 http www techempower com benchmarks 一直在 Netty 之上展示 vert x 有时数量很大 根据其网站 vert x 使用 Netty 来实现 大部分网络 IO
  • jquery:无法获取div的“value”属性

    这是我的 chrome javascript 控制台的屏幕截图 展示了我的困境 我真的无法理解为什么我无法获取 值 属性 class 属性工作得很好 所以我认为同样应该适用于 value 我在我的应用程序中测试的代码 coffeescrip
  • 没有WebRTC的nodeJS中的简单SIP电话

    您好 我需要实现类似 SIP 电话的功能 但使用不带 WebRTC 的 经典 SIP 大多数 JS 库都专注于基于 websockets 和 WebRTC 的 SIP 但在我的基础设施中 我没有 WebSocket 有像 JsSIP 这样的
  • PHP preg_match_all:提取逗号分隔列表

    例如 我有以下字符串 WIDGET TEST abc 456 我希望能够使用 preg match all 返回逗号分隔参数的数组 有人可以帮我解决我需要的正则表达式吗 我已经尝试过 并且返回以下查询 a b preg match all
  • 方案中的延续传递风格?

    我遇到了这段代码在维基百科上 http en wikipedia org wiki Continuation passing style define pyth x y k x x lambda x2 y y lambda y2 x2 y2
  • 图像 PropertyItems 和已处置的 MemoryStream

    我正在加载一个Image from a byte using MemoryStream并通过检查图像来获取有关图像的信息ProperyItems 但在这样做的过程中 我注意到一些奇怪的行为 其中一些图像的PropertyItems正在消失
  • sqlite:如何获取组计数

    我在网站上有一个用户操作的 SQLite 表 每一行都是网站上的相同操作 只是时间 日期不同 并用用户 ID 标记 该表有超过 2000 万条条目 我了解如何使用按用户 ID 进行分组的功能来获取用户计数 即 A 执行了 3 次操作 B 4
  • 键入字符时搜索字符串

    我的手机中存储了联系人 假设我的联系人是 Ram Hello Hi Feat Eat At 当我打字时 A 我应该得到所有匹配的联系人说 Ram Feat Eat At 现在我再输入一个字母T 现在我的总字符串是 AT 现在我的程序应该重用
  • 序列不包含匹配元素 - 使用 LINQ 返回与自定义属性匹配的 SiteMapNode

    我有一个 Web sitemap 文件 使用siteMapNodeXML 中的元素 我已为每个标签添加了自定义属性 我正在尝试提取自定义属性的值id 我想找一个单身siteMapNode in the SiteMapNodeCollecti
  • 使用 PHP 和 MySQL 创建多维数组

    我是 PHP 新手 正在寻找从数据库返回数据的有效方法 假设我有一个 UserProfile 表 它与 UserInterest 和 UserContact 具有一对多关系 Select p Id p FirstName p LastNam