如何在 fatfree 框架中循环遍历 mysql 结果集?

2023-12-04

我是 php fat-free 框架的新手,我正在尝试弄清楚如何循环遍历 mysql 查询结果,或者更好的是,将其作为关联数组获取(仅用于学习目的)。

到目前为止我所做的是

while(!$users->dry()){
   array_push($user_assoc,$users->cast());
   $users->next();
}

这可行,但我想知道是否有更好的方法来做到这一点?另外,如何设置错误处理程序?我的意思是如何检查查询是否有任何错误(即无脂肪等价于mysql_error())?


数据库查询

有 3 种变体可以循环遍历数据库结果:

没有映射器:

执行 SQL 查询并以关联数组的形式获取结果集:

$users = $db->exec('SELECT * FROM users');
foreach($users as $user)
  echo $user['name'];//associative array

使用映射器->加载:

逐一获取映射器行(您的方法):

$user=new \DB\SQL\Mapper($db,'users');
$user->load('');
while(!$user->dry()) {
  echo $user->name;//db mapper
  $user->next();
}

使用映射器->查找:

以映射器数组的形式获取结果集:

$mapper=new \DB\SQL\Mapper($db,'users');
$users=$mapper->find('');
foreach($users as $user)
  echo $user->name;//db mapper

数据库错误处理

\DB\SQL 是 PDO 的子类,因此它可以抛出可捕获的 PDO 异常。由于默认情况下这些是禁用的,因此您需要先启用它们。这可以通过两种不同的方式完成:

  • 在实例化时,对于所有事务:

    $db = new \DB\SQL($dsn, $user, $pwd, array( \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ));

  • 稍后在代码中,基于每个事务:

    $db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

一旦启用 PDO 异常,只需将它们作为其他异常捕获即可:

try {
  $db->exec('INSERT INTO mytable(id) VALUES(?)','duplicate_id');
} catch(\PDOException $e) {
  $err=$e->errorInfo;
  //$err[0] contains the error code (23000)
  //$err[2] contains the driver specific error message (PRIMARY KEY must be unique)
}

这也适用于 DB 映射器,因为它们依赖于相同的 DB\SQL 类:

$db=new \DB\SQL($dsn,$user,$pwd,array(\PDO::ATTR_ERRMODE=>\PDO::ERRMODE_EXCEPTION));
$mytable=new \DB\SQL\Mapper($db,'mytable');
try {
  $mytable->id='duplicate_id';
  $mytable->save();//this will throw an exception
} catch(\PDOException $e) {
  $err=$e->errorInfo;
  echo $err[2];//PRIMARY KEY must be unique
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 fatfree 框架中循环遍历 mysql 结果集? 的相关文章

  • 按文件名对 $_FILES 进行排序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 他俩 如您所知 在新的 HTML5 中 您可以非常轻松地上传多个文件 但我这里的问题是如何按列 名称 对 FILES 数组进行排序 这是
  • Mysql 将 int 转换为 MAC

    我有一些数据可以转换 其中有 2 列 其中一列有 IP 它包含整数值 我在 mysql 查询中使用了以下函数 是否有一个函数可以用来转换我的 mac 列 其中包含整数和数据类型是bigint to MAC地址 SELECT INET NTO
  • Xdebug V3 不会停止 VSCode 中的断点

    我正在尝试使用 VSCode 在 XAMPP 上进行调试 但没有成功 我知道有很多关于这个的问题 我已经尽了一切努力 但仍然行不通 我的 xdebug 扩展确实有一件奇怪的事情 我目前使用 PHP v7 4 12 和 Xdebug 版本 3
  • 在哪里可以学习网络编程从入门到精通? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我尝试做教程 但它是无组织且无结构的 我在哪里可以学习 PHP 从初学者到大师 我正在寻找类似的网站w
  • 将 cookie 设置为在当天结束时过期

    我想设置一个 cookie 并让它在一天结束时过期 这有效 但 24 小时后过期 setcookie route upgrade voted true time 86400 这不起作用 setcookie route upgrade vot
  • 如何使用 Perl 更改 mysql 密码

    我需要使用 Perl 脚本更改一些 mysql 密码 以下内容在更改数据库条目时有效 但是当我针对 mysql 用户更改修改它时 它将它们重置为空白密码 最后 刷新权限 也很好 但我还没有找到方法 usr bin perl use DBI
  • 覆盖 FOS 用户包中的“更改密码”模板

    我做了一些研究 遗憾的是找不到任何帮助 因此 我将 FOSUserBundle ChangePasswordAction 渲染到我的模板中 但它显示供应商提供的默认模板 我的渲染控制器的模板 block body h2 Einstellun
  • Laravel Vue 组件只能传递数字?

    在我的 UserMenu vue 中我写道 export default props nameVal data return 并在blade php中
  • docker 中的 php Curl 冲突 CURLOPT_FILE 和 CURLOPT_RETURNTRANSFER

    当我使用curl时CURLOPT FILE and CURLOPT RETURNTRANSFER选项 文件为空 没有任何curl错误 fp fopen saveTo w ch curl init fileUrl curl setopt ch
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 在 foreach 中使用 QueryPath 的多个查找

    我正在使用 QueryPath 和 PHP 这发现 eventdate 没问题 但不会为 dtstart 返回任何内容 qp htmlqp url foreach qp gt find table schedule gt find tr a
  • Facebook PHP-SDK 页面刷新后似乎丢失了 userID

    我似乎登录工作正常 我可以登录 接受应用程序 第一次 然后显示用户信息 例如姓名 图片 等 然而 当我刷新页面时 userid 又回到 0 我必须再次登录 我不确定问题是什么 我必须在每次页面加载时重新启动它还是什么 我不知道 我会发布一些
  • Facebook API sdk 4.0 - 将照片发布到 Facebook

    我正在尝试创建一个应用程序 用户可以在其中浏览照片并将其从计算机提交到 Facebook 为此 他们首先必须将照片上传到服务器 然后使用 Facebook 请求将此图像发布到 Facebook 我正在使用多部分 表单数据 这就是我到目前为止
  • PHP 编码风格回归;在开关/外壳中

    我们正在尝试为我们的团队实施新的编码风格指南 当未找到 break 时 php codeniffer 会在 switch case 语句上打印警告 如下所示 switch foo case 1 return 1 case 2 return
  • 带倒计时的php循环

    假设我从 400 开始计数器 我将如何执行一个向后运行直到 0 的 foreach 循环 伪代码 i 400 foreach SOMETHING do stuff i for i 400 i gt 0 i do stuff 其他方法 i 4
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F
  • 从 Laravel 4 输入生成新数组

    我使用 Input all 从动态生成的表单中获取一些输入 我使用 jQuery 来允许用户添加字段 字段名称为 first names last names 和 emails input 变量现在看起来像这样 array size 4 t
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • 如何在 PHP 5.6 中通过 php.ini 设置“verify_peer_name=false”SSL 上下文选项

    案例 我想打开 SSL 连接localhost而 SSL 证书是 FQDN 的问题 问题 没有进行特殊处理就行 下面的程序失败并显示以下消息 PHP Warning stream socket enable crypto Peer cert
  • 在 MySQL 中存储表情符号的编码问题:如何使用 Prisma ORM 在 NodeJS 中定义字符排序规则?

    亲爱的 Nodejs 专家和数据库专家 我们在 MySQL 数据库中存储表情符号和其他特殊字符时遇到问题 我们使用 Prisma 得到一个错误 这是我们使用的 ORM 参数无法从排序规则 utf8 general ci 转换为 utf8mb

随机推荐

  • 如何在不触发文本观察器的情况下更改 EditText 文本?

    我有一个EditText其上带有客户文本观察器的字段 在一段代码中 我需要更改我使用的 EditText 中的值 setText whatever 问题是一旦我做出改变afterTextChanged方法被调用 这创建了一个无限循环 如何更
  • PHP 会话在页面之间丢失数据

    我正在尝试为我的网站设置一个登录系统 需要有人登录才能发帖 我已经用会话设置了它 它在我的本地主机上运行得很好 但在服务器上却不起作用 我在某些页面上设置了 print r session 以查看数据丢失的位置 在 checklogin p
  • Haskell Servant 从处理程序获取当前路由/URL

    我想获取与我的处理程序相对应的当前路线 这是我的服务器的模型 仅供参考 type ServerAPI route01 gt Get HTML Text lt gt route02 gt subroute gt Get HTML Text l
  • 以角度形式保留 http 调用的顺序

    我正在尝试使用我在此处找到的几种方法来解决我面临的订单问题SO没有成功 我有一个方法 我正在为数组加载一些数据leaflet layers private loadSelectedTileLayersCapabilities void le
  • 在示例 Android 应用程序中使用解析 SDK 库时出现错误

    在这里 我正在使用名为 3rd party sdk 的东西做一些事情parse sdk它为Android平台提供了一些API 我经历过这个link并尝试为此解析 sdk 做一些示例工作 但是在完成该链接上提到的所有步骤之后 我无法运行此测试
  • 克隆对象不可删除

    我正在尝试使用 Jquery 克隆可删除对象 但克隆的对象不可删除 document ready function input value Add click function e e preventDefault div field la
  • 按顺序在数组中查找数组

    如何编码 find array in array 功能 伪代码 Haystack array 0 a 1 b 2 a 3 b 4 c 5 c 6 a 7 b 8 d 9 c 10 a 11 b 12 a 13 b 14 c Needle a
  • SCOPE_IDENTITY 似乎不适用于参数化查询

    我有一个带有标识列的表 我想在插入后获取其值 以下代码不使用参数 运行良好 string query INSERT INTO aTable aColumn VALUES 42 SqlCommand command new SqlComman
  • 使用 WordPress 配置 apple-app-site-association 文件

    我正在尝试实现 iOS 通用链接 我需要在 WordPress 的根目录中提供一个 apple app association 文件 我如何为我的 apple app association 文件提供服务Content type appli
  • 使用文本 IO 双击可执行文件制作 ruby​​ 脚本?

    我是 Ruby 的初学者 我不知道该怎么做 现在我有了脚本 它在终端中完美运行 但我希望能够在桌面上创建它的双击版本 然后在终端中打开一个窗口并运行脚本 Automator 和 Platypus 不起作用 我不知道该怎么办 先感谢您 假设您
  • Nivo滑块自定义高度/宽度问题

    我已经寻找解决我的问题的方法 但尚未成功 我有不同尺寸的图像Nivo Slider 但我需要创建一个viewport显示图像居中div 这很难解释 但我在下面附上了一张图表 图像必须居中div 而div也必须反应灵敏 我不想要div更改其大
  • 如何限制循环,使其仅对每个值循环一次

    使用以下方法获得两个数组 array1 ls lad awk print 5 array2 ls lad awk print 9 两个数组排版 declare a array1 0 4096 1 4096 2 4096 3 4096 4 4
  • 将 NSData 转换为 NSString - NSLog 限制

    我正在尝试转换NSData to NSString在 Zendesk 中 但得到的字符串不完整 或者至少无法完全解码data When I curl以下命令 curl https mySubdomain zendesk com api v2
  • Amazon EC2 virtualenv:pip 说它安装了 numpy 但 python 找不到它

    我已经非常彻底地研究了这个问题 但似乎找不到答案 我正在运行 virtualenv 并尝试使用 Python 2 7 在 EC2 上安装 numpy 是的 我已经激活了 virtualenv dev ec2 user site pip no
  • 在引用的 dll 中放置 AutoMapper 地图注册的位置

    这是我的第一个 AutoMapper 项目 对某些人来说可能是显而易见的 但教程和示例并不适合我 我试图了解在哪里以及在某种程度上如何注册 我想我想要配置文件 我的地图以供使用 有很多 MVC 示例都说要使用全局 asax 这是有道理的 但
  • 获取 ng-Show 显示的列表的长度

    我正在使用Vraptor Angular 问题很简单 我用 ng show 隐藏了表中的一些行 但我想获取显示的实际行的数量 长度 示例 我在 data 上有 10 条记录 但是当我使用 ng show 时 它只显示 5 条记录 当我使用
  • Microsoft.CppClean.targets 删除我需要的文件

    我有一个VS2012的解决方案 其中项目A在运行时生成一个 h文件 该头文件被另一个项目B使用 项目A和项目B位于同一目录中 但是 当项目 B 开始重建时 C Program Files x86 MSBuild Microsoft Cpp
  • javax.el.PropertyNotWritableException:/index.xhtml @29,118 value =“”:设置操作的语法非法

    我想创建一个带有本地化选项的登录屏幕来翻译名称 当我从默认英语更改为阿拉伯语时 它崩溃了 这是faces config xml
  • Inno Setup Compiler:如何修改文件内容

    我正在尝试逐行读取文本文件的内容 我正在寻找一些东西 针对特定的线路 我需要修改该行 我需要将新内容保存在另一个文件中 然后删除原始文件并用原始文件名重命名新文件 function NextButtonClick CurPageID Int
  • 如何在 fatfree 框架中循环遍历 mysql 结果集?

    我是 php fat free 框架的新手 我正在尝试弄清楚如何循环遍历 mysql 查询结果 或者更好的是 将其作为关联数组获取 仅用于学习目的 到目前为止我所做的是 while users gt dry array push user