php - MySQL将表复制到具有相同凭据的不同数据库
问题描述
我正在使用 PHP 内置的标准 MySQL 函数将一个表复制到一个新表。当表在同一个数据库中时,这非常有效。但我想用相同的用户名和密码将它复制到另一个数据库名。
任何建议如何实现这一目标?(因为$database
只能包含 1 个数据库名称)
显示的错误是Table 'torzahttp_rsw.torzahttp_rsw.kwaliteit' doesn't exist
torzahttp_rsw
数据库名称和kwaliteit
表名称。为什么数据库名称被使用了两次?
// Create a new MySQL database connection
if (!$con = new mysqli('localhost', $username, $password, $database)) {
die('An error occurred while connecting to the MySQL server!<br><br>' . $con->connect_error);
}
// Create an array of MySQL queries to run
$sql = array(
'DROP TABLE IF EXISTS `backup_db.backup_table`;',
'CREATE TABLE `backup_db.backup_table` SELECT * FROM `live_db.live_table`'
);
// Run the MySQL queries
if (sizeof($sql) > 0) {
foreach ($sql as $query) {
if (!$con->query($query)) {
die('A MySQL error has occurred!<br><br>' . $con->error);
}
}
}
$con->close();
解决方案
从MySQL 手册:
如果多部分名称的任何组成部分需要引用,请单独引用它们而不是引用整个名称。例如,写
`my-table`.`my-column`
,不是`my-table.my-column`
。
你的代码:
$sql = array(
'DROP TABLE IF EXISTS `backup_db.backup_table`;',
'CREATE TABLE `backup_db.backup_table` SELECT * FROM `live_db.live_table`'
);
应该是这样的:
$sql = array(
'DROP TABLE IF EXISTS `backup_db`.`backup_table`;',
'CREATE TABLE `backup_db`.`backup_table` SELECT * FROM `live_db`.`live_table`'
);
或者,完全放弃反引号。
推荐阅读
- wpf - 如何删除此行并将 MouseOver 更改为背景
- javascript - Safari 15 无法解码以前版本解码没有问题的音频数据
- kotlin - 是否可以创建一个循环,每次执行完成时调用一个方法?
- reactjs - scalajs-react: How to know index of the entry while looping a Seq?
- python - 将列表项刮成逗号分隔值
- azure - 将 Godaddy 自定义域映射到 Azure CDN 终结点
- javascript - 使用来自 JS(Odoo)的自己的按钮添加记录?
- javascript - 如何并排放置两个跨度,然后在它们之上放置一个跨度
- flutter - 颤振:IconButton onPressed 不适用于 SimpleDialog
- python - 无法在 Azure 机器学习实验上运行的脚本中的 python 中安装 python-dotenv