【发布时间】:2011-01-25 22:29:41
【问题描述】:
我一直在使用面向对象的风格在 PHP 应用程序中处理 MySQL 数据库函数。但是现在我想使用一个需要结果资源作为输入变量的函数,但我可用的只是语句中的结果对象
$oresult = $odb->query($sql);
有没有办法从面向对象风格的数据库连接中生成结果资源 ($dbconn = new mysqli (...))?
谢谢你
【问题讨论】:
我一直在使用面向对象的风格在 PHP 应用程序中处理 MySQL 数据库函数。但是现在我想使用一个需要结果资源作为输入变量的函数,但我可用的只是语句中的结果对象
$oresult = $odb->query($sql);
有没有办法从面向对象风格的数据库连接中生成结果资源 ($dbconn = new mysqli (...))?
谢谢你
【问题讨论】:
您通常希望为您的结果集提供资源(封装数据库函数的包装器函数。即 numRows()、affectedRows() 等),这反过来又可以为您提供一个记录集来迭代必要时得出结果。
【讨论】:
AFAIK,Mysqli 的 OO 和 Procedural 风格甚至根本不处理结果资源。如果返回记录集,query() 和 real_query() 函数和方法都会立即(或最终导致)返回 Mysqli_resultobject。整个 Mysqli 扩展中没有函数或属性可以从主 Mysqli 对象中提取“链接”,也没有从 Mysqli_result 对象中提取资源(本身)。事实上,你在 Mysqli 的程序样式示例中看到的 $link 实际上只是一个 Mysqli 对象。
如果您正在使用的任何函数调用“结果资源”,则它们必须意味着来自旧的常规 Mysql 扩展的函数。没有办法将 Mysql 和 Mysqli 函数和方法混合在一起。所以本质上,是的,在这种情况下,您必须完全放弃 Mysqli,并从一开始就使用旧式的程序化 Mysql。
【讨论】: