/ / mysqlに特定のデータベースのテーブルのすべてのデータを切り捨てるクエリがありますか? - php、mysql

mysqlに特定のデータベースのテーブルのすべてのデータを切り捨てるクエリがありますか? - php、mysql

$data = mysql_query( "truncate "DATABASE_NAME" " );

mysqlクエリを使用してデータベースのすべてのテーブルを切り捨てることができますか、または "tablename"を切り捨てるような単一のテーブルのみを切​​り捨てることはできますか?

回答:

回答№1は0

データベース内のすべてのテーブルをループすることで、この問題を解決できます。テーブル名を取得するには、MySQLのINFORMATION_SCHEMAを使用します。ソリューションは次のようになります。

//database connection information - adjust as needed
$dsn = "mysql:dbname=testdb;host=127.0.0.1";
$user = "dbuser";
$password = "dbpass";
//connect to the DB using PDO
$dbh = new PDO($dsn, $user, $password);
//query all tables in a database
$stmt = $dbh->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA="your_database_name_here";");
//truncate tables one by one
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$dbh->query("TRUNCATE TABLE ".$row["TABLE_NAME"]);
}
unset($stmt, $dbh);

簡潔にするために、エラー処理(例えば、データベースへの接続が確立できない場合の例外の捕捉)は省略されている。

さらに、古いMySQL APIはPHP 5.5では廃止され、PHP 7では完全に削除されているため、使用しないでください。代わりにmysqliまたはPDOを使用する必要があります。を見てみましょう 「APIの選択」 詳細については、php.netのページを参照してください。