gpt4 book ai didi

php - 全文搜索适用于 mysql 但不适用于 php

转载 作者:行者123 更新时间:2023-11-30 23:37:34 25 4
gpt4 key购买 nike

我在 php 中有以下内容:

public function myfunction($v){
//ini_set("memory_limit","32M");
$v=mysqli_real_escape_string($this->connection,$v);
$stmt=mysqli_prepare($this->connection,"SELECT * from TABLE WHERE MATCH(column) AGAINST($v)");

$this->throwExceptionOnError();

mysqli_stmt_execute($stmt);
$this->throwExceptionOnError();

$rows=array();

mysqli_stmt_bind_result($stmt,$row->column1,$row->column2);

while (mysqli_stmt_fetch($stmt)) {

$rows[]=$row;
$row = new stdClass();

mysqli_stmt_bind_result($stmt,$row->column1,$row->column2);

}

mysqli_stmt_free_result($stmt);
mysqli_close($this->connection);
print_r('this is a test');
print_r($rows);
}

这是在搜索具有全文索引的长文本列......

运行此代码(注释掉 ini_set)我收到内存大小耗尽错误。当我取消注释 ini_set 部分并增加内存时,我没有输出也没有错误(甚至没有打印“这是一个测试”)。

为什么我在增加内存时没有得到任何输出(或至少没有错误语句)?我没有在 php 中调整我的错误报告。

(直接在mysql中运行相同的语句(不增加内存限制)耗时0.0007秒)

最佳答案

因为您将 mysql 提供的所有记录保存在您的 $rows 数组中。

如果记录集很大,则会出现该错误。
还有你的语法,两次调用 mysqli_stmt_bind_result($stmt,$row->column1,$row->column2); 是不是很好看

关于php - 全文搜索适用于 mysql 但不适用于 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6245255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com