php - mysql中是否有一个查询会截断特定数据库中表的所有数据?

标签 php mysql

$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/

相关文章:

PHP MySQL JSON 自定义输出

mysql - SQL : Reuse function result in query without using sub-query

php - 如何在 php/mysql 中对时间间隔进行分组并根据这些时间组获取统计信息?

PHP PDO SQLSTATE[HY000] [2002] 连接被拒绝

php - 使用 Laravel 和 Eloquent 根据兴趣查找建议

javascript - PHP Redirect 会破坏 ajax,因此强制 Jquery 页面刷新一次

php - 正常查看转义字符串

javascript - 数组内的链接或 window.location 的不同链接

PHP 插入空白值而不是 GET 值

php - 如何在 while 循环中打印 PDO 结果,但从用户指定的索引而不是从开始处打印?