在我的php代码中,我想从如下表中删除列:
function delete_table_column_db( $table_name, $column_attrs ){
global $wpdb;
$res = $wpdb->query( "ALTER TABLE " . $table_name . " DROP " . $column_attrs['name'] );
if( $res === false ){
error_log( sprintf("The column %s could not be deleted for the table %s", $column_attrs['name'], $table_name ) );
}
}
但如果表只有一列,则此函数会出错:
ERROR 1090 (42000): You can't delete all columns with ALTER TABLE; use DROP TABLE instead
所以我想 DROP TABLE
如果它´是表格的最后一列。为此,我需要检查一下´是表的最后一列。有办法吗?
3条答案
按热度按时间4uqofj5v1#
希望有帮助。
piv4azn72#
要计算表中的列数,我们需要使用
INFORMATION_SCHEMA.COLUMNS
. 只有用户有权访问INFORMATION_SCHEMA
table。可以按如下方式获取表中的列总数:
所以可以先使用这个查询,得到列数。如果大于1,则可以继续
ALTER TABLE .. DROP COLUMN
查询。一些值得注意的专栏
information_schema.columns
表是:TABLE_SCHEMA
-包含列的表所属的架构(数据库)的名称。TABLE_NAME
-包含列的表的名称。COLUMN_NAME
-列的名称。dkqlctbz3#
基于@madhur bhaiya答案的完整代码: