我有一个Mysql表(名为"base"),其中包含300万条记录,该表仅由3 int(10)字段组成。

当我尝试运行这个简单的查询$result = mysqli_query($db, 'SELECT * FROM base')时,php显示了错误:
PHP致命错误:第17行C:\xampp\htdocs\combina.php中允许内存大小为134217728字节(试图分配10485768字节)
我认为mysqli_query不应该将所有表记录加载到内存中,对吗?
那么为什么内存溢出呢?
我在Windows10上使用XAMPP安装,PHP7.2.
以下是代码:
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "comb";
$db = mysqli_connect($servername, $username, $password, $dbname);
if (!$db) {
die("Falha na conexão: " . mysqli_connect_error());
}
$result = mysqli_query($db, 'SELECT * FROM base');发布于 2018-07-27 14:07:04
我研究并认识到,mysqli_query命令实际上将所有记录加载到内存中。也就是说,对于大型表,它实际上会产生内存限制。
我找到的解决方案是使用查询 (它将激活查询而不加载RAM中的所有记录)、结果 (将返回结果对象而不是缓冲的)和最终划 (逐行读取结果)的组合。
这样,所提出的问题的解决办法或多或少是:
$db = mysqli_connect($servername, $username, $password, $dbname);
mysqli_real_query($db, 'SELECT * FROM base');
$result = mysqli_use_result($db);
while ($row = mysqli_fetch_row($result)) {
...https://stackoverflow.com/questions/51550061
复制相似问题