- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在阅读 mysqli_store_result
但我不明白为什么这是一个选择加入而不是选择退出。根据手册,我不应该将它用于占用大量内存的操作,但考虑到我一次只能获取 50-100 行文本(通常),我得出的结论是我应该始终使用它,但我必须明确为每个查询调用它。这对我来说似乎很奇怪。我这样说是因为它向我表明我误解了某些事情。
据我了解;如果您读取 100 行并使用 while ($stmt->fetch())
您实际上是通过网络向 MySQL 发送 100 个 read-next-requests(假设 web 和 DB 在不同的机器上)。如果您使用 mysqli_store_result
,您只发送一个请求并在网络服务器上循环结果集。为什么我不总是这样做?我错过了什么?
还有一个子问题:这是否与我的 MySQL 状态变量“handler read next”非常高有关,store_result 会有帮助吗?
最佳答案
why this is an opt-in and not an opt-out.
好吧,我可以尝试回答(或者至少是推测)为什么会这样。
Mysqli 与大多数 PHP 一样,只是对 C 函数的简单包装。太薄了,它自己不会添加任何东西。反过来,底层 C API 仅提供基本功能,将所有改进留给实现。由于您无法“撤消”在客户端获取结果集,因此默认情况下这是一个选择加入似乎是合乎逻辑的。
有趣的是,为什么对于 mysqli_query()
缓冲模式默认打开,但对于准备/执行却不是。
yet I must explicitly call it for every single query.
加油!这是唯一您必须为每个查询调用的东西吗? 调用 bind_param、bind_result、execute() 怎么样?你看,mysqli就是调用最基本的API函数。因此,在某种程度上,调用 store_result()
是合乎逻辑的。
鉴于所有这些,我认为您可以得出的唯一结论是您应该在 mysqli 之上编写包装器,或者您可以使用 PDO,它确实是一个包装器,几乎所有必需的功能都已经实现.
关于php - 默认使用 mysqli_store_result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38087189/
我一直在阅读 mysqli_store_result 但我不明白为什么这是一个选择加入而不是选择退出。根据手册,我不应该将它用于占用大量内存的操作,但考虑到我一次只能获取 50-100 行文本(通常)
我想了解什么 mysqli_store_result 实际上呢?当我访问 PHP Manual的 mysqli_store_result , 我找到了定义 mysqli_store_result —
问题 mysqli::store_result() 之间有什么区别?和 mysqli::use_result() ? 故事 模糊的文档 PHP.net 上的文档似乎对两者之间的区别非常模糊。 mysq
我是一名优秀的程序员,十分优秀!