我希望在MySQL数据库的所有表的所有字段中搜索给定的字符串,可能使用如下语法:
SELECT * FROM * WHERE * LIKE '%stuff%'
有可能做这样的事情吗?
发布于 2009-03-12 17:00:20
您可以查看information_schema
模式。它有一个包含所有表和表中所有字段的列表。然后,您可以使用从该表中获得的信息来运行查询。
涉及到的表有模式、表和列。有一些外键,这样您就可以准确地构建在模式中创建表的方式。
发布于 2011-01-27 21:51:17
您可以对数据库(及其数据)执行SQLDump
,然后搜索该文件。
发布于 2011-03-08 23:58:44
PHP函数:
function searchAllDB($search){
global $mysqli;
$out = Array();
$sql = "show tables";
$rs = $mysqli->query($sql);
if($rs->num_rows > 0){
while($r = $rs->fetch_array()){
$table = $r[0];
$sql_search = "select * from `".$table."` where ";
$sql_search_fields = Array();
$sql2 = "SHOW COLUMNS FROM `".$table."`";
$rs2 = $mysqli->query($sql2);
if($rs2->num_rows > 0){
while($r2 = $rs2->fetch_array()){
$column = $r2[0];
$sql_search_fields[] = "`".$column."` like('%".$mysqli->real_escape_string($search)."%')";
}
$rs2->close();
}
$sql_search .= implode(" OR ", $sql_search_fields);
$rs3 = $mysqli->query($sql_search);
$out[$table] = $rs3->num_rows."\n";
if($rs3->num_rows > 0){
$rs3->close();
}
}
$rs->close();
}
return $out;
}
print_r(searchAllDB("search string"));
https://stackoverflow.com/questions/639531
复制相似问题