- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经扩展了 PHP 的 mysqli
类,它工作正常。但是如何让它在查询时返回自定义结果对象(或用于插入/更新/删除等的 bool 值)?
namespace MyApp;
class MySQLi extends \mysqli {
public function query($query, $resultmode = null) {
// This needs to return a MySQLiResult or a boolean
}
}
class MySQLiResult extends \mysqli_result {
}
这样做我可以返回一个 MySQLiResult 对象,但我不知道如何为非基于选择的查询返回一个 bool 值:
public function query($query, $resultmode = null) {
$this->real_query($query);
return new MySQLiResult($this);
}
更新:
这是我最终使用的:
class MySQLi extends \mysqli {
public function query($query, $resultmode = null) {
$result = parent::query($query, $resultmode);
return is_bool($result) ? $result : new MySQLiResult($result);
}
}
class MySQLiResult {
private $result;
public function __construct(mysqli_result $result) {
$this->result = $result;
}
public function __call($name, $arguments) {
return call_user_func_array(array($this->result, $name), $arguments);
}
public function __set($name, $value) {
$this->result->$name = $value;
}
public function __get($name) {
return $this->result->$name;
}
}
最佳答案
Phil 的回答没问题,但可以通过检查 mysqli::field_count
来扩展 MySQLi_Result。查看documentation对于 mysqli::field_count
This function can be useful when using the mysqli_store_result() function to determine if the query should have produced a non-empty result set or not without knowing the nature of the query.
这正是我们所需要的。
public MySQL extends MySQLi
{
public function query($query)
{
if ($this->real_query($query)) {
if ($this->field_count > 0) {
return new MySQL_Result($this);
}
return true;
}
throw new MySQL_Exception($this->error, $this->errno);
}
}
现在您可以从 MySQLi_Result 扩展您的结果类并实现一些有用的接口(interface),例如 SeekableIterator
,这样您就可以在您的结果集上使用 foreach
:
class MySQL_Result extends MySQLi_Result implements Countable, SeekableIterator, ArrayAccess
{
...
}
关于php - 扩展 mysqli_result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6195377/
是否有时不调用 mysqli_result::free、mysqli_result::close、mysqli_result::free_result 可能更有益code> 尤其是当页面本身很短时,因
这个问题在这里已经有了答案: Fatal error: Call to undefined function mysqli_result() (2 个回答) 5年前关闭。 我有问题 mysqli_re
这是代码。当我执行它时,它显示错误消息“可捕获的 fatal error :类 mysqli_result 的对象无法转换为字符串”请帮我解决这个问题。 $sql = "SELECT dname FR
我在扩展 mysqli_result 类时遇到问题。 我正在尝试使用自定义类扩展mysqli_result 类。这是我的代码: class mysqli_result_extended extends
我有一个用 PHP 编写的查询,该查询返回表的主键(该表存储在数据库中的表数组中): $link:与数据库的连接 $tables:数据库表数组 $x:循环变量 $primaryKey = mysqli
我有大约 75 个 php 现有脚本可以访问 mysql 数据库,类似于此伪代码: $query="SELECT * from table"; $result=mysqli_query($conn,$
当 mysqli_query 被执行时,PHP 从数据库(MySQL)接收结果集,我认为这是一个对象(mysqli_result 类)。 这个 mysqli_result 类是否在其属性中携带来自数据
如果用户名被占用,我正在检查数据库,但我不断收到此错误“在第 9 行调用未定义的函数 mysqli_result()。” 可能因为我正在使用 jQuery 处理来自不同文件的输入并用它检查它,它说它
我有这个错误 Warning: mysqli_fetch_array() [function.mysqli-fetch-array]: Couldn't fetch mysqli_result in
这个问题在这里已经有了答案: Object of class mysqli_result could not be converted to string (5 个答案) 关闭去年。 我请求 Goo
我已经扩展了 PHP 的 mysqli 类,它工作正常。但是如何让它在查询时返回自定义结果对象(或用于插入/更新/删除等的 bool 值)? namespace MyApp; class MySQLi
这个问题在这里已经有了答案: Object of class mysqli_result could not be converted to string (5 个答案) 关闭 1 年前。 我是网络
抛出以下错误: Fatal error: Trying to clone an uncloneable object of class mysqli_result 当我尝试直接对 mysql 查询结果
我有一个验证用户登录的功能。 $login_query = mysqli_query($GLOBALS['conn'], "SELECT COUNT(`user_id`) as `count`,`us
根据我的研究,我了解到应该在操作/使用查询数据后释放结果集数据。我正在尝试在以下代码上下文中使用 mysqli_result::free pdo: if ($result) { $change
我已经搜索并尝试了不同的解决方案大约 3 个小时,现在我正在放弃并发布这个问题。 我有以下代码; prepare($sql); $stmt->bind_param('iisssi', $trackID
我正在尝试将此代码从 Java 复制到 php 中,但我无法准确弄清楚如何获取行/列的内容? 这是java代码: ResultSet resultsRS = statement.executeQuer
这个问题在这里已经有了答案: Object of class mysqli_result could not be converted to string (5 个答案) 关闭 1 年前。 我遇到了
我有一个 mysqli_result: $stmt = $db->prepare("SELECT * FROM customer"); $stmt->execute(); $result = $stm
我收到错误: Object of class mysqli_result could not be converted to string 这是我的代码: $result = mysqli_query
我是一名优秀的程序员,十分优秀!