簡體   English   中英

MySQL查詢導致大量輸出使PHP頁面空白

[英]mysql query resulting in numerous output makes php page go blank

我使用像查詢搜索功能。 當我搜索數據庫中很少的關鍵字時,一切都會順利進行。 但是,當關鍵字在db中為“ popular”時,屏幕將變為空白頁。

function dbSearch($q) //$q is array of keywords
{

  global $mainframe, $option;

  $db =& JFactory::getDBO();

  $str = implode("%' AND text LIKE '%", $q);
  $str = str_replace("AND text LIKE '%-", "AND text NOT LIKE '%", $str);

  $lim   = $mainframe->getUserStateFromRequest("$option.limit", 'limit', 100, 'int'); 
  $lim0  = JRequest::getVar('limitstart', 0, '', 'int');
  $query = "SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE type=4 AND text LIKE '%".$str."%' ORDER BY ref ASC";

  $db->setQuery( $query );
  $rows = $db->loadObjectList();
  $count = count($rows);

  if ($db->getErrorNum())
  {
    echo $db->stderr();
    return false;
  }

  $db->setQuery('SELECT FOUND_ROWS();'); 
  jimport('joomla.html.pagination');
  $pageNav = new JPagination( $db->loadResult(), $lim0, $lim );

  HTML_output::showFoundResults($rows, $pageNav, $count);
}

上面的查詢有問題嗎? 為什么在很多結果上都失敗了?

我的猜測是,您的PHP需要很長時間才能基於查詢生成結果。 您的apache錯誤日志很可能會顯示PHP timout錯誤,因為該頁面的時間超過30秒而無法生成該頁面。

嘗試將LIMIT設置為更小的值(如10),看看它是否能夠生成頁面。

您可以做的另一件事是跳過被稱為“停用詞”的單詞,例如“ and”,“ the”等在一種語言中非常常見的單詞。 搜索引擎會這樣做,快速搜索將為您提供更多詳細信息和停用詞列表。

您可以通過在類似phpMyAdmin的工具中運行查詢來查看執行查詢所花費的時間。

SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE type=4 AND text LIKE '%jabberwocky%' ORDER BY ref ASC";

相比

SELECT SQL_CALC_FOUND_ROWS * FROM `table` WHERE type=4 AND text LIKE '%the%' ORDER BY ref ASC";

在同一個查詢工具中,如果將“ EXPLAIN”放在查詢前面,MySQL將返回其完成查詢所必須執行的所有操作的列表。

需要注意的一件事是,搜索單詞“ the”也將返回查詢構造方式的“ theory”結果。 不去REGEX查詢就不容易編寫代碼。

多少時間后出現空白頁? PHP配置文件中max_execution_time指令的值是什么?

如果同時嘗試增加此值,或對查詢或表進行一些改進。

空白頁通常表示致命錯誤或可能是解析錯誤。 如果將錯誤日志記錄設置為最大,並且仍然顯示空白頁,請嘗試添加[code] php_value display_errors 1 php_value display_startup_errors 1 [/ code]

到您的.htaccess文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM