php - 动态为mysql查询中的所有字段名分配别名

标签 php mysql dynamic schema alias

我的 mysll 数据库中有 2 个表。两个表都有很少的固定列和很少的动态列(字段/架构)。我想用以下查询连接这两个表:

SELECT *
FROM `cd` cd
LEFT JOIN cd_n cn ON cd.id = cn.fk_cd

我想要的结果是

CD_Column1   CD_Column1   CD_Column3   ...... CN_Column1   CN_Column2   CN_Column3  .....
value        value        value        ...... value        value        value       ...       
value        value        value        ...... value        value        value       ...       

其中 ..... 是两个表的动态列名称。 所以情况是我不知道列名,因为它们是动态的,我想在查询级别重命名(别名)它。请让我知道我该怎么做?

最佳答案

您需要查询information_schema以获取这两个表的列名称。假设您将 cd 列名称存储在数组 $cd_columns 中,将 cd_n 列名称存储在数组 $cdn_columns.

然后在 PHP 中通过列数组创建查询循环并执行如下操作:

$sql = 'SELECT ';

// add the cd columns
$i = 0;
foreach($cd_columns as $col) {
    $sql .= "{$col} AS CD_Column{$i},";
    $i++;
}

// add the cd_n columns
$i = 0;
foreach($cdn_columns as $col) {
    $sql .= "{$col} AS CN_Column{$i},";
    $i++;
}

// remove the trailing comma
$sql = trim($sql, ',');
// continue the SQL
$sql .= ' FROM ...';

这有帮助吗?

关于php - 动态为mysql查询中的所有字段名分配别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43128810/

相关文章:

php - 使用 jquery 和 php 的实时通知

PHP fatal error : Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number:

c# - 为什么在实现接口(interface)时动态和对象可互换的参数类型?

javascript - 如何通过创建事件的 javascript 中定义的处理程序来处理事件?

php 在 s3 导入的图像上添加水印

php - 替换分号 (;),但不替换 html 字符(等)

php - 在 PHP PDO MYSQL 中插入多行的最佳方法是什么?

php - 加密/准备密码以插入数据库的最佳方法

mysql - 如何在同一查询中对多个表使用计数?

jsf - 如何使primefaces面包屑动态?