2016-06-20 10 views
0

私はあるサーバ上のすべてのデータベースをループし、それぞれのデータベースがPHPで共有する1つのテーブル内の機密情報を"****"に置き換えようとしています。私は個々に各データベースに接続してからスクリプトの残りの部分を実行することができますが、このサーバー上に90を超えるデータベースがあるので、それは痛いほど長いコードファイルになります。どのように私はすべてのデータベースをループすることができ、ちょうどすべての行を置換する1つのアクションを持っているPHPコードを書くだろうか?PHPのシングルサーバでMySQLデータベースをループする

<?php 
$host = 'example.example.com'; 
$user = 'example'; 
$password = 'password'; 
$db = 'database1'; 

$connection = new mysqli($host, $user, $password, $db); 

if (!$connection){ 
    die('Could not connec to server: '.mysqli_error($connection)); 
} 

$sql1 = "SELECT * FROM `info`"; // The table 
$query1 = mysqli_query($connection, $sql1); 

if (!$query1){ 
    die('Could not select from `info`: '.mysqli_error($connection)); 
} 

while ($row = mysqli_fetch_array($query1)){ 
    $id = $row['id']; 

    $sql2 = "UPDATE `info` 
       SET `sensitiveinfo1` = '****', `sensitiveinfo2` = '****' 
       WHERE `id` = '$id'"; 

    $query2 = mysqli_query($connection, $sql2); 

    if (!$query2){ 
     die('Could not replace info with "****": '.mysqli_error($connection)); 
    } 
} 
?> 

私はこれを1つではなくすべてのデータベースで実行するにはどうすればよいでしょうか?

+0

データベースの詳細の配列を追加し、foreachを実行します。 – Styphon

+0

あなたが話していることが分かるように、コードを入力してください。 – Jodo1992

+0

いいえ、これはコード作成サービスではありません。あなたが簡単なforeachを書く方法を知らない場合は、あなたのためにそれを行う専門家を支払う。 – Styphon

答えて

0

これは動作するはずです。私はPHPerの大部分ではない。

<?php 
$host = 'example.example.com'; 
$user = 'example'; 
$password = 'password'; 
$db = 'database1'; 

$connection = new mysqli($host, $user, $password, $db); 

if (!$connection){ 
    die('Could not connect to server: '.mysqli_error($connection)); 
} 

$sql1 = "SELECT schema_name FROM information_schema.tables where table_schema not in ('information_schema','mysql','performance_schema)" and table_name = 'info'; // The table 
$query1 = mysqli_query($connection, $sql1); 

if (!$query1){ 
    die('Could not select from `information_schema.schemata`: '.mysqli_error($connection)); 
} 

while ($row = mysqli_fetch_array($query1)){ 
    $schema = $row['table_schema']; 

    $sql2 = "UPDATE ".$schema.".info SET `sensitiveinfo1` = '****', `sensitiveinfo2` = '****'"; 


    $query2 = mysqli_query($connection, $sql2); 

    if (!$query2){ 
     die('Could not replace '.$schema.'.info with "****": '.mysqli_error($connection)); 
    } 
} 
?> 
関連する問題