mysql全库搜索关键字_PHP检索整个数据库所有表所有字段包
含某个关键字
场景
刚刚在项⽬中⽤到了删除包含某个关键字内容,需要检索整个数据库的所有表、所有字段的值。这⾥记录⼀下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];
}
php修改数据库内容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 ', $columns_arr);
$rs = db_sql_query($sql);
//echo $sql . "";
if($rs){
$and_arr = array();
foreach($columns_arr as $c){
$sql = "SELECT * from $t where $c";
$s = db_sql_query($sql);
if($s){
$and_arr[] = str_replace(' like ', ' not like ', $c);
//echo $sql . "";
}
}
if(!empty($and_arr)){
$sql = "SELECT * from $t where " . implode(' and ', $and_arr);
$s = db_sql_query($sql);
if(!empty($s)){
echo str_replace('SELECT *', 'DELETE', $sql) . ";";
}
}
//echo $sql . "";
}else{
/
/echo $t . "";
}
}
//print_r($all_tables);
}
search_all_db();
db_sql_query 为查询数据库的⽅法类,这⾥不做详细说明。使⽤时请⾃⾏修改代码。标签:
⽤⼿机扫描访问,第⼀时间获取⽹站模板更新动态
版权申明:此⽂如未标注转载均为本站原创,⾃由转载请表明出处好友资料库。
顶⼀下 (0)
打赏本站
踩⼀下 (0)
关闭
感谢您的⽀持,我会继续努⼒的!
扫码打赏,你说多少就多少
下⼀篇:已经是最后⼀篇
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论