场景
刚刚在项目中用到了删除包含某个关键字内容,需要检索整个数据库的所有表、所有字段的值。这里记录一下PHP的方法。
思路
分析数据库结构,然后将所有varchar类型的字段取出来
用 or 语句拼接所有可用字段,并搜索关键词
打印出对应的表的对应字段
PHP代码实例function search_all_db( $search_key ){
$tables = db_sql_query("show tables");
foreach($tables as $t){
sort($t);
$all_tables[] = $t[0];
}
foreach($all_tables as $t){
$columns = db_sql_query("show columns from $t");
$columns_arr = array();
foreach($columns as $c){
if(substr($c['Type'], 0, 7) != 'varchar'){continue;}
$columns_arr[] = '`' . $c['Field'] . '`' . " like '%$search_key%'";
}
if(empty($columns_arr)){continue;}
$sql = "SELECT * from $t where " . implode(' or ', $c