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并添加新方法
基础教程推荐
猜你喜欢
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- 使用 PDO 转义列名 2021-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- HTTP 与 FTP 上传 2021-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01