php - PHP/MySQL - 重命名多个表及其列
问题描述
我搜索了 SO,发现了一些与我的问题类似的主题。感谢这些主题,我能够编写一个函数来重命名我的表及其列的前缀。
目前我的脚本只适用于我的表。所有具有特定前缀的表都将被重命名,因此一旦我启动我的函数,名为“PREFIX_users”的表将只是“用户”。我现在的问题是,表中所有列的功能都不起作用。我没有收到任何 php 错误/警告,只是我的列保持相同的名称。
这是我的代码:
/*
* Rename tables and columns inside sysrec
* @param db name
*/
public function renameTablesColumns($database) {
$this->db->prepare("use ".$database."");
$sqlShowSORTables = "SHOW TABLES ";
$statement = $this->db->prepare($sqlShowSORTables);
$statement->execute();
$SORtables = $statement->fetchAll(PDO::FETCH_NUM);
foreach($SORtables as $renameTable){
$new_table_prefix = '';
$old_table_prefix = 'PRAEFIX_';
$old_table = $renameTable[0];
if(!preg_match('/^'.$old_table_prefix.'/', $old_table)) {
$new_table=$old_table;
} else {
$new_table = preg_replace('/^'.$old_table_prefix.'/', $new_table_prefix, $old_table);
$sql[] = "ALTER TABLE ".$database.".".$old_table." RENAME TO ".$database.".".$new_table."; ";
}
$sqlShowSORColumns = "SHOW COLUMNS FROM ".$renameTable[0]." ";
$statement = $this->db->prepare($sqlShowSORColumns);
$statement->execute();
$columns = $statement->fetchAll(PDO::FETCH_NUM);
foreach($columns as $renameColumn) {
$new_column_prefix = '';
$old_column_prefix = 'PRAEFIX_';
$old_column = $renameColumn[0];
if(!preg_match('/^'.$old_column_prefix.'/', $old_column)) {
$new_column=$old_column;
} else {
$new_column = preg_replace('/^'.$old_column_prefix.'/', $new_column_prefix, $old_column);
$sql[] = "ALTER TABLE ".$database.".".$old_table." RENAME COLUMN ".$old_column." TO ".$new_column."; ";
}
}
}
$sqlState = implode(' ', $sql);
$executeStatement = $this->db->exec($sqlState);
return $executeStatement?$executeStatement:false;
}
任何帮助将非常感激。
解决方案
推荐阅读
- r - 对于相同的字符串,R 相同返回 False
- pandas - 计算一个数据帧中的值在另一个数据帧中重复的次数
- java - 如何在背压上做一些事情,而不是从 backStack 中弹出一个片段,并且仍然应该能够为其他片段正常工作?
- yacc - 警告:2 个移位/减少冲突 [-Wconflicts-sr] 错误
- spring - 网关未设置 replyChannel 标头
- android - 使用 Gradle 为 android 编译 c++ - 在 Visual Studio 中编译但在 Gradle 中不编译?
- r - 效应量置信区间 (ETA2)
- math - 对残差平方的说明
- r - 如何在闪亮的情况下从 selectInput() 函数中绘制选定的输入?
- kubernetes - 保证 Kubernetes Job 中 preStop 的执行