1つのmysqlデータベースに多数のテーブルがあります。私は変数にテーブル名を格納し、各テーブル名にいくつかのコードを実行する必要があります。MySQLテーブルのリストを取得し、すべてのテーブルのコードを実行します
どうすればいいですか?
1つのmysqlデータベースに多数のテーブルがあります。私は変数にテーブル名を格納し、各テーブル名にいくつかのコードを実行する必要があります。MySQLテーブルのリストを取得し、すべてのテーブルのコードを実行します
どうすればいいですか?
使用SHOW TABLES
:
$pdo = new PDO('mysql:dbname=mydb', 'myuser', 'mypass');
$stmt = $pdo->query('SHOW TABLES;');
if ($stmt->rowCount() > 0) {
$tables = $stmt->fetchAll(PDO::FETCH_NUM);
foreach ($tables as $table) {
$table_name = $table[0];
// do something
}
}
テーブルのリストは、次のクエリSHOW TABLES FROM db_name
で取得できます。例えば、 http://dev.mysql.com/doc/refman/5.5/en/show-tables.html。
ここでその方法を説明します。 show tables
上
<?php
$mysqli = new MySQLi (..); //add ur account details here
$result = $mysqli -> query ("SHOW TABLES");
$tables = array();
while ($row = $result -> fetch_assoc()){
$tables[] = $row[0];
}
foreach ($tables as $table){
// do your processing on tables.
}
さらに詳しい情報:MySQL :: MySQL 5.5 Reference Manual :: 12.4.5.38 SHOW TABLES Syntax
直接テーブルの配列をあなたを与えるだろう、これを使用して、結果のサイクルを必要とせず:
$pdo = new PDO('mysql:dbname=mydb', 'myuser', 'mypass');
$tables = $pdo->query('SHOW TABLES')->fetchAll(PDO::FETCH_COLUMN, 0);
whileループ内でこれを行うことができるので、foreachは必要ありませんが+1 – RobertPitt
@RobertPitt;はい、することができますが、この方法では、例えば、テーブル名の配列として関数にリストを送信し、そのような外部のリストを使用することができます。私はちょうどそれがこのようにそれを書くためにスケーラブルになると思った。 :) –