php 如何用表的字段定义中给出的注解替换列名

yvt65v4c  于 2023-02-03  发布在  PHP
关注(0)|答案(2)|浏览(108)

我想用描述性的名称来更改列名,比如在我的表中我有一个字段名“job_title”,我想用“你的职位是什么”来替换这个标题,job_description与“Describe your job description”为完成此任务,我可以使用别名,但我希望动态更改列名,而不是硬编码。我已经在表中单个字段的注解部分描述了这些问题,我试图从数据库中获取这些注解,并将字段的注解显示为列标题,但无法完成。这是我的PHP代码:

$sql_getcolumns="select * interview_col_comments where table_name ='interview'";
    $result = $mysqli->query($sql_getcolumns);
    echo "<table>";
     echo "<tr>";
        while($row = mysqli_fetch_array($result)) 
      {
          echo "<th>".$row[0]."</th>";
      }

echo“";我还尝试在PhpMyAdmin接口中找到一种方法,如果我在PHP中使用查询标记列名和检索标签,但在SQL接口中没有找到此选项。
有没有其他的方法使用PHP,或SQL,我可以用它来给予表的列描述性的名称?

4ioopgfo

4ioopgfo1#

  • 一种方法是在php中创建一个数组,如下所示。
<?php  $comment=[
'job_title' => "what is your job title",'job_description'=>"Describe your job description"];
 echo "<th>".$comment[$row[0]]."</th>";
?>'
  • 另一种方法是在mysql中创建另一个带有列描述的表,并在运行时替换。
id|column_id|description
   1|job_title|"what is your job title"      
   2|job_description|"Describe your job description"
u4dcyp6a

u4dcyp6a2#

你要找的东西叫做“本地化”。
有很多方法可以做到这一点。
我通常也喜欢将这些信息与我正在使用的数据库紧密连接,所以我所做的是:
我使用数据库列的注解字段来提供元信息。例如,列注解可以如下所示:

#required #de=Vertragsnummer #en=Contract_Number #search

现在,使用下面的查询,我可以检索注解,并使用一些regex / string操作根据这些信息构建一个ColumnMetadataObject

SELECT 
    c.`TABLE_NAME`,
    c.`COLUMN_NAME`, 
    c.`COLUMN_COMMENT`, 
    t.`TABLE_COMMENT` 
FROM 
    information_schema.columns c left join 
    information_schema.TABLES t ON 
    c.TABLE_NAME = t.TABLE_NAME and 
    c.TABLE_SCHEMA = t.TABLE_SCHEMA  
where 
    c.`table_schema` = 'MyDatabase'

在解析信息并提供所需的元数据对象之后,My header输出如下所示:

<?=$db->getColumnMetdata('contractNumber')->getHeader($_SESSION["user_language"]));?>

代码的复杂程度可能会有所不同。我的ColumnMetadata还包含其他信息,如requiredsearchable、长度、可能的外键等。这部分由您决定-仅对于本地化头,关联数组也可以工作。类似于:

["de"] => {
   "table1.contractNumber" => "Vertragsnummer"
   "table1.Id" => "Id"
}

相关问题