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并添加新方法
基础教程推荐
猜你喜欢
- 在 Magento 中设置全局变量,GUI 方式? 2021-01-01
- 雄辩的 laravel WhereIn All 2021-01-01
- PHP - 从时差中排除所有非营业时间/天 2022-01-01
- File_get_contents 不起作用? 2021-01-01
- Laravel Dusk:FacebookWebDriverExceptionUnknownErrorException:未知错误:NET::ERR_CONNECTION_REJECTED 2022-01-01
- PHP中如何获取当前用户的请求参数? 2023-09-25
- PHP 5 反射 API 性能 2021-01-01
- 使用 php 7 运行 composer,但为 php 5 安装包 2022-01-01
- 使用 jQuery Ajax 删除 mySQL 表行 2021-01-01
- 为 iPhone APNS 使用 PHP 时出错 2022-01-01
