首页 > 解决方案 > mysqli 查询以搜索整个数据库

问题描述

我读了一些答案,说要使用 phpMyAdmin 上的搜索选项在数据库的所有表中查找某个字符串。我尝试使用 phpMyAdmin 执行的查询在 php 脚本中查找字符串。由于查询执行时间超过 30 秒,我不断收到致命错误。我使用的代码是:

$query="SELECT * FROM `classification`.`class` WHERE (CONVERT(`phylum_id` USING utf8) LIKE '%enteropneusta%' OR CONVERT(`subphylum_id` USING utf8) LIKE '%enteropneusta%' OR CONVERT(`superclass_id` USING utf8) LIKE '%enteropneusta%' OR CONVERT(`class_id` USING utf8) LIKE '%enteropneusta%' OR CONVERT(`class_name` USING utf8) LIKE '%enteropneusta%')";
$result=mysqli_query($query);
while($result){
 print_r($result);
}

再次需要帮助!我设法在 phpmyadmin 的查询生成器上提出了这个查询

SELECT
* FROM
`table1`,
`table2`,
`table3`,
`table4`,...
`table12`,
  WHERE
(
    (
        `table1`.`columnlast` LIKE '%string%'
    ) OR(
        `table2`.`columnlast' LIKE '%string%'
    ) OR(
        `table3`.`columnlast` LIKE '%string%'
    )...

    ) OR(
        `table12`.`columnlast` LIKE '%string%'
    )

这需要超过 3-4 分钟才能运行。有什么办法可以缩短时间吗?

标签: phpmysqlmysqli

解决方案


所以,一直忙于自己项目的教授终于腾出一些时间来帮助我,这就是我们使用的查询。

SELECT columnName1 as result FROM tableName1 WHERE columnName1 LIKE '%string%' 
UNION SELECT columnName2 FROM tableName2 WHERE columnName2 LIKE '%string% UNION
...
UNION
SELECT columnName12 as result FROM tableName12 WHERE columnName12 LIKE '%string%'

推荐阅读