MySQL和PHP中的空数据库?
是否可以通过使用PHP连接并发出命令来清空整个数据库?您可以使用MySQL和PHP中的空数据库?,php,mysql,Php,Mysql,是否可以通过使用PHP连接并发出命令来清空整个数据库?您可以使用 SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db' 并使其截断 甚至,你可以 SELECT 'TRUNCATE TABLE ' + table_name + ';' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db' 然后迭代结果集,对每条记录执行字
SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db'
并使其截断
甚至,你可以
SELECT 'TRUNCATE TABLE ' + table_name + ';' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db'
然后迭代结果集,对每条记录执行字符串查询。是。基本上,您需要获得数据库中所有表的列表,然后迭代该列表,并为每个条目发出
TRUNCATE TABLE$tablename
这看起来是一个相当不错的实现:如果您有权限,最简单的方法是: DROP DATABASE dbName; CREATE DATABASE dbName; USE DATABASE dbName; 删除数据库dbName; 创建数据库dbName; 使用数据库dbName; 另一种方法是查询
信息\u模式
数据库中的触发器、存储例程(过程和函数)、表、视图以及可能的其他内容,然后逐个删除它们
即使在此之后,您的数据库可能仍与新创建的数据库处于不同的状态,因为它可能具有自定义的默认字符集和排序规则集。使用alterdatabase
来更改此设置
随着功能的不断增加(事件…),您将以这种方式进行越来越多的工作。因此,实际上,完全清空数据库的唯一方法是删除它并重新创建它。您可以获得数据库中所有表的列表(
$databaseName
),循环遍历所有表,并对每个表应用截断表
$result = mysqli_query($link, "SHOW TABLES IN `$databaseName`");
while ($table = mysqli_fetch_array($result)) {
$tableName = $table[0];
mysqli_query($link, "TRUNCATE TABLE `$databaseName`.`$tableName`");
if (mysqli_errno($link)) echo mysqli_errno($link) . ' ' . mysqli_error($link);
else echo "$tableName was cleared<br>";
}
$result=mysqli\u query($link,“在“$databaseName”中显示表”);
while($table=mysqli\u fetch\u数组($result)){
$tableName=$table[0];
mysqli_查询($link,“TRUNCATE TABLE`$databaseName`.`$tableName`);
if(mysqli_errno($link))回显mysqli_errno($link)。“”.mysqli_error($link);
else echo“$tableName已清除
”;
}
这将清除数据库中所有表的内容,保留结构。这对我来说很有效
mysql -u < DB-USER > -p<DB-PASS> --silent --skip-column-names -e "SHOW TABLES" <DB-NAME> | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -u < DB-USER > -p< DB-PASS > -v < DB-NAME >
mysql-u-p--silent--skip列名-e“SHOW TABLES”| xargs-L1-I%echo“DROP TABLE`%`;”mysql-u-p-v
是。您可以连接数据库并通过作为变量赋值来截断表
$conn=newmysqli($servername、$username、$password、$dbname)
$variableName=$conn->query($que)
如果($conn->connect\u错误){
die(“连接失败:”.$conn->connect\U错误)
}
$result=$conn->query('TRUNCATE TABLE yourtablename;')
您将丢失表的结构。主题启动者除了想要一个同名的空数据库外,什么也没说,所以它完美地回答了这个问题。没有理由做出可能错误的假设,这就是为什么这个答案从我这里得到+1。如果用户没有CREATE DATABASE
权限,他们将被卡住。要使用数据库,只需use dbName
不带数据库
关键字。请提供更多信息。“仅编码”和“尝试此”答案是错误的,因为它们不包含可搜索的内容,并且没有解释为什么有人应该“尝试此”。我们在这里努力成为知识资源。当它们是外键约束时,这不起作用。请在解决方案中添加说明,以便更好地理解。虽然这可能会回答作者的问题,但它缺少一些解释词和/或文档链接。如果没有一些短语,原始代码片段就没有多大帮助。你也会发现这很有帮助。请编辑你的答案-
<?php
$connection = new mysqli($host, $user, $pass, $db);
$sql = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE '".$db."'";
$result = $connection->query($sql);
$tables = $result->fetch_all(MYSQLI_ASSOC);
foreach($tables as $table) {
$sql = "TRUNCATE TABLE `".$table['TABLE_NAME']."`";
$result = $connection->query($sql);
}
?>
if ($result) {
echo "Request ID table has been truncated";
}
else echo "Something went wrong: " . mysqli_error();