php - How to Search Values in all table in a mysql database? -


how find last updated values inside table field in given database? search results "%2015-07-08%" @ least 1 of words:

its not impossible, not trivial either. don't think there easy way sql alone (i assume use mysql, haven't specified kind of database using).

one way make script uses information_schema tables find relevant tables , columns search through, iterate in php , execute queries search columns , tables.

edit: sake of doing made small example of mean, code uses pdo:

function findall($search_str, $database, $types = ['tinytext','blob','varchar','text','longblob']){     global $pdo;      foreach($types &$t){         $t = "'" . $t . "'";     }     $types = implode(',',$types);      $s = $pdo->prepare("       select table_name, column_name       information_schema.columns                 table_schema = :database         , data_type in ($types)     ");     $s->bindvalue(':database', $database);     $s->execute();     $results = [];      foreach($s->fetchall(\pdo::fetch_assoc) $column){         $search = $pdo->prepare("select * $database.${column['table_name']} ${column['column_name']} :search_str");         $search->bindvalue(':search_str', $search_str);         $search->execute();          $result = $search->fetchall(\pdo::fetch_assoc);          if(count($result))             $results[$column['table_name']] = isset($results[$column['table_name']])                 ? array_merge(                     $results[$column['table_name']],                     $result                 )                 : $result;      }     return $results; } 

example of usage:

findall('%foobar%','my_database');  findall('%2015-07-08%','my_database',['date','datetime','timestamp']); //only search date types... 

Comments