php - 使用 PHP 和 MySQL 时如何搜索比常规内容更长的内容?

标签 php mysql innodb

我维护一个遗留系统(使用 PHP 和 MySQL)。从数据库搜索内容时遇到问题。例如,我有一个要搜索的查询:

$query = "SELECT * FROM comments WHERE comment_content LIKE '%"$term"%'"; 

我使用UTF-8,MySQL的InnoDB类型,当$term的长度是8067(日语)字符(数字也像文本字符)时,没有问题。当$term的长度为8068个字符时,无法搜索,这是我的问题。

  • 全文搜索使用 PHP 和 MySQL 时的最大长度是多少?
  • 如何解决我的问题?

感谢您的帮助。谢谢!

最佳答案

呃...实际代码中是这样的。

  1. 检查$term len()函数的长度

    len($term) if $term is >8067 then do stuff
    
  2. 迭代 $term 中 8067 个字符的多次舍入

    $charachterincrement=8067
    $searchtermcount = roundup(len($term)/8067,0)
    
    $searchterm = "comment_content LIKE" & left($term,$charachterincrement)
    

    $i=1

    do while $i <= $searchtermcount 
        $i = $i+1
        $charachterincrement=$charachterincrement+8067
    
  3. 创建一个新的 $searchterm 来存放您的“like”语句。

  4. 对于每次迭代,将其添加到您的 $searchterm

    $searchterm = $searchterm & " AND comment_content  LIKE '%" & mid($term, $charachterincrement, 8067) & "'%"
    
  5. 关闭循环

    loop
    
  6. 关闭 if

    end if
    
    $query = "SELECT * FROM comments WHERE $searchterm;
    

这将创建一个 SQL 语句,该语句需要搜索查询中初始 $term 的所有部分。但它不会考虑顺序,它只会检查帖子中是否存在每个 8067 字符串。

关于php - 使用 PHP 和 MySQL 时如何搜索比常规内容更长的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26499602/

相关文章:

mysql - actullay dd() 如何在 laravel 中工作

php - 我无法在 Magento 中为产品保存价格

mysql - 自动增量值设置为 ' 18446744073709551615 ',并具有多个加载数据文件

mysql - 数据库结构 - 具有 category_id 的单个设计表(多行)或多个设计类别表(几行)

php - Laravel & Stripe - 无法识别的请求 URL (GET :/v1/customers/)

php - 在 Bluehost CPanel 中使用脚本创建电子邮件帐户

php - 爬虫如何解析网页中的文本?

java - Spring JDBC 事务副作用

mysql - innodb锁等待超时

PHP 正则表达式 "Unknown modifier p"