【发布时间】:2011-04-04 07:22:07
【问题描述】:
我对 PHP 中的 mysqli 接口有点困惑。当我昨天着手将我的旧 mysql 代码更改为 mysqli 时,文档引导我走上了 ::prepare、::bind_params 和 ::execute 的道路。
在我努力处理结果的过程中,我最终编写了自己的 fetch_assoc - 并且遇到了我在 SO 上讨论的问题。一位评论员质疑我没有使用::fetch_assoc 做什么。我什至没有注意到 mysqli_result 类。当我将我的 mysqli 代码从 ::preapre 变形为 ::query 时,结果处理变得更加容易 - 除了一个例外:当我之前使用 ::bind_results 提取列时,生成的 PHP 关联数组将携带正确的数据类型;当我现在使用::fetch_assoc 等时,我得到的只是一个字符串数组。
我现在正在编写一个转换器。我只是想,既然我对mysqli库的理解已经犯了一个大错误,我最好在这里发帖看看是否有一种“官方”的方式来获取类型一致的关联结果数组。
【问题讨论】:
-
你试过 fetch_object() 或 fetch_row() 吗?
-
我没试过。该手册对 fetch_object 说:“返回一个具有与获取的行相对应的字符串属性的对象。”没有希望...
-
你已经实现了我对
MySQLi的一个大愿望......能够执行准备好的语句并返回一个MySQLi_Result对象......但就目前而言,如果如果你想使用准备好的语句,你需要完全重新设计MySQLi_Result类来处理语句... -
...或者你采取下一步并使用pdo而不是mysqli,docs.php.net/pdo
-
哈哈!我只是爱你沃尔克。我将看看 PDO 的东西。此刻我有点筋疲力尽。 24 小时内 3 次重写让我大吃一惊。无论如何,你们似乎都确认 mysqli_result 中不存在 type-congruent fetch。同时,我找到了 fetch_fields 的类型映射,并且刚刚完成了一小部分 fetch_correct 函数。这已经成功了。谢谢大家。