Je sais qu’il n’est probablement pas possible de faire cela, mais je veux juste vérifier avec vous, les gars... Est-il possible de faire quelque chose comme ça, à l’aide de MySQL ? Je veux Rechercher dans tous les domaines de toutes les tables d’une chaîne donnée :
Réponses
Trop de publicités?
Dean Rather
Points
7856
Greg Lyon
Points
541
Si vous avez phpMyAdmin installé utiliser sa fonctionnalité de « Recherche ».
- Sélectionnez votre DB
- Veillez à ce que vous n’avez pas besoin d’une base de données sélectionné (c'est-à-dire pas une table, sinon vous obtiendrez une boîte de dialogue de recherche complètement différente)
- Cliquez sur « Recherche » onglet
- Choisir le terme de recherche souhaitée
- Choisissez les tables de recherche
J’ai utilisé ce jusqu'à 250 bases de table/10Go (sur un serveur rapide) et le temps de réponse est tout simplement incroyable.
Olivier
Points
622
function searchAllDB($search){
global $mysqli;
$out = "";
$sql = "show tables";
$rs = $mysqli->query($sql);
if($rs->num_rows > 0){
while($r = $rs->fetch_array()){
$table = $r[0];
$out .= $table.";";
$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()){
$colum = $r2[0];
$sql_search_fields[] = $colum." like('%".$search."%')";
}
$rs2->close();
}
$sql_search .= implode(" OR ", $sql_search_fields);
$rs3 = $mysqli->query($sql_search);
$out .= $rs3->num_rows."\n";
if($rs3->num_rows > 0){
$rs3->close();
}
}
$rs->close();
}
return $out;
}