$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のページを参照してください。