How to extend mysqli_result and add new method(如何扩展mySQLI_Result并添加新方法)
本文介绍了如何扩展mySQLI_Result并添加新方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Mysqli_Result类有fetch_all()方法以行数组(实际上是二维数组,因为行已经是字段数组)的形式从结果集中一次返回多个行。此外,结果集具有以对象形式返回单行的方法fetch_object()。
现在,我想扩展mysqli_Result类并添加新方法fetch_objects()(复数),该方法将返回对象的关联数组,其中关联键是记录ID[id=>Object()]。当然,为了返回扩展的结果集,我还需要扩展mysqli类并覆盖它的Query()方法。但是我不知道mysqli和返回的mysqli_Result之间的连接和查询参数是如何传递的。
这应该是这样工作的:
$db=new ReallyMySQLi(...); //initiating my mysqli
$myrst=$db->query($SQL); //returned my extended result
//fetch_objects() returning associative array of objects
//with record ID as associative key
foreach($myrst->fetch_objects() as $id=>$object)
{
echo 'Customer ID:'.$id; //or $object->id;
echo 'Customer firstname:'.$object->firstname;
echo 'Customer lastname:'.$object->lastname;
}
php>
我在mysqli_result的推荐答案手册中找到了这一点,并对其进行了一些修补。不过我没有试过。
class Database_MySQLi extends MySQLi
{
public function query($query)
{
$this->real_query($query);
return new Database_MySQLi_Result($this);
}
}
class Database_MySQLi_Result extends MySQLi_Result
{
public function fetch_objects()
{
$rows = array();
while($row = $this->fetch_object())
{
$rows[$row->id] = $row;
}
return $rows;
}
}
,用法为
$db=new Database_MySQLi(...); //initiating my mysqli
$myrst=$db->query($SQL); //returned my extended result
//fetch_objects() returning associative array of objects
//with record ID as associative key
foreach($myrst->fetch_objects() as $id=>$object)
{
echo 'Customer ID:'.$id; //or $object->id;
echo 'Customer firstname:'.$object->firstname;
echo 'Customer lastname:'.$object->lastname;
}
这篇关于如何扩展mySQLI_Result并添加新方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何扩展mySQLI_Result并添加新方法
基础教程推荐
猜你喜欢
- php 7.4 在写入变量中的 Twig 问题 2022-01-01
- php中的PDF导出 2022-01-01
- 如何在数学上评估像“2-1"这样的字符串?产生“1"? 2022-01-01
- 使用 scandir() 在目录中查找文件夹 (PHP) 2022-01-01
- php中的foreach复选框POST 2021-01-01
- 将变量从树枝传递给 js 2022-01-01
- PHPUnit 的 Selenium 2 文档到底在哪里? 2022-01-01
- Yii2 - 在运行时设置邮件传输参数 2022-01-01
- Web 服务器如何处理请求? 2021-01-01
- 主题化 Drupal 7 的 Ubercart “/cart"页 2021-01-01
