如何解决MySQLi SELECT 语句需要 LIMIT
我正在尝试显示数据库表中 6 列的列表。该表恰好有 30,000 多条记录。我过去使用过的工作,但这次列表以 10,939 条记录结束,除非我将 LIMIT 子句添加到该行,否则根本不会显示。
表名是phpbb_users,我排序的列是username。目标是显示每个人的列表,显示大约 8 个其他数据字段。 如果我使用此代码:
$sql = "SELECT * FROM phpbb_users ORDER BY username";
$result = $conn->query($sql);
然后按照通常的 while ($row = $result->fetch_assoc()) 内容显示查询失败的每一行并且没有出现列表。
如果我将代码更改为:
$sql = "SELECT * FROM phpbb_users ORDER BY username LIMIT 10000";
列表出现,但只显示前 10,000 条记录。
在 MySQLi SELECT 查询中可以读取多少条记录是否有某种限制?我在运行 PHP 5.6 和 MySQL 时没有遇到这个问题,但我刚刚升级到 PHP 7.2 和 MySQLi,新代码的工作方式不同。
解决方法
我确实检查了 FileZilla 中的 error_log。这似乎是内存限制。
[12-Jan-2021 13:14:12 UTC] PHP 致命错误:第 202 行的 /home/tiffinrv/public_html/staff/member_search.php 中允许的内存大小为 33554432 字节(试图分配 39828320 字节)
过去,管理员会显示列表并使用 CTRL-F 查找他们想要的记录。我计划编写一些代码,通过使用 SELECT 和 INNER JOIN 从两个表中访问该信息来使这更容易,但首先需要了解为什么这不再起作用。但接下来我将不得不弄清楚如何处理内存限制。在升级之前它运行良好,但似乎新版本的开销更大,可用内存更少。希望服务器上有足够的 RAM,并且可以更好地对其进行配置/分配。
我注意到日志中有另一组错误。
[12-Jan-2021 13:14:11 UTC] PHP 警告:在 /home/tiffinrv/public_html/ 中使用未定义的常量 localhost - 假定为“localhost”(这将在未来版本的 PHP 中引发错误) Staff/member_search.php 第 54 行
我已为我的数据库连接中使用的变量赋值。它和我过去一样工作得很好,但这个错误警告了未来的问题。根据我收集的信息,我可能需要定义它们,例如 define('USERNAME','myname;');而不仅仅是建立值,例如 $username = 'myname';以防止未来升级出现问题?
,我能够提高 WHM 中的内存限制,现在我的内存错误消息消失了。但是,如果我在查询中使用 LIMIT 10000,该列表将显示 10,000 条记录。但是,如果我将限制提高到 20000,或者完全删除 LIMIT,则列表会在大约 5,000 条记录处停止,但每次运行时实际计数都会有所不同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。