$data = mysql_query( "截断 'DATABASE_NAME' ");
我们能否设法使用 mysql 查询截断数据库的所有表或仅截断单个表,如 truncate 'tablename'?
最佳答案
您可以通过遍历数据库中的所有表来解决该问题。要获取表名,请使用 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。看看 "Choosing an API" php.net 上的页面以获取更多信息。
关于php - mysql中是否有一个查询会截断特定数据库中表的所有数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40057817/