全文搜索工作在mysql但不是PHP

时间:2011-06-05 19:20:11

标签: php mysql

我在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中运行相同的语句(不增加内存限制)需要.0007秒)

1 个答案:

答案 0 :(得分:0)

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

如果记录集很大,那么就会出现错误 也是mysqli_stmt_bind_result($stmt,$row->column1,$row->column2);双重调用的语法  不是那么好看