从 mysql 转变为 mysqli
我对 PHP 中的 mysqli 接口有点困惑。当我昨天开始将旧的 mysql 代码更改为 mysqli 时,文档引导我走上 ::prepare
、::bind_params
和 ::execute 的道路
。
在我努力处理结果的过程中,我最终编写了自己的 fetch_assoc - 并且遇到了我在 SO 上讨论的问题。一位评论员质疑我在不使用 ::fetch_assoc
的情况下做了什么。我什至没有注意到 mysqli_result 类。当我将 mysqli 代码从 ::preapre
更改为 ::query
时,结果处理变得更加容易 - 但有一个例外:之前我使用 ::bind_results 时
提取列,生成的 PHP 关联数组将携带正确的数据类型;当我现在使用 ::fetch_assoc
等时,我得到的只是一个字符串数组。
我现在正在编写一个转换器。我只是想,既然我在理解 mysqli 库时已经犯了一个重大错误,我最好在这里发帖看看是否有一种“官方”方法来获取类型一致的关联结果数组。
I am a little perplexed by the mysqli interface in PHP. When I set out yesterday to change my old mysql code to mysqli, the docs steered me down the road of ::prepare
, ::bind_params
and ::execute
.
In my efforts to deal with the results, I ended up writing my own fetch_assoc - and had problems which I discussed on SO. One commentator queried what I was doing not using ::fetch_assoc
. I had not even noticed the mysqli_result class. When I morphed my mysqli code from ::preapre
to ::query
, the result handling became MUCH easier - with one exception: when previously I used ::bind_results
to extract the columns, the PHP associative array that resulted would carry the correct data types; when instead I now use ::fetch_assoc
etc, all I get is an array of strings.
I am coding up a converter now. I just thought that since I already committed one cardinal error in my understanding of the mysqli library, I better post here to see whether there's an "official" way of getting type-congruent associative result arrays.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您使用 mysqlnd 作为传输客户端并设置选项
MYSQLI_OPT_INT_AND_FLOAT_NATIVE
在 mysqli 对象上,您实际上获得了本机类型。prints
这个功能是在 PHP 5.3 中添加的。
为了让您开始使用 PDO (如果您选择使用它):
prints
If you're using mysqlnd as the transport client and set the option
MYSQLI_OPT_INT_AND_FLOAT_NATIVE
on the mysqli object you get in fact the native types.prints
This feature has been added in PHP 5.3.
To get you started with PDO (should you choose to use it):
prints