选择一行的所有列及其值和列注解

uqdfh47h  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(297)

下面是获取一行中所有列的查询

  1. $STH = $DBH->db->prepare("SELECT * FROM Settings");
  2. $STH->execute();
  3. $STH->setFetchMode(PDO::FETCH_ASSOC);
  4. $str = '';
  5. while ($row = $STH->fetch())
  6. {
  7. foreach($row as $key => $value)
  8. {
  9. $str .= '<div>'.$key.' => '.$value.'</div>';
  10. }
  11. }

这个是为了得到列的扩展信息(包括 comment )

  1. $STH = $DBH->db->prepare("SHOW FULL COLUMNS FROM Settings");
  2. $STH->execute();
  3. $STH->setFetchMode(PDO::FETCH_ASSOC);
  4. \* the same php code *\

我可以将这两个sql查询组合起来同时获得以下数据吗

  1. `FieldName`, `FieldValue`, `CommentValueOfColumn`

' ' '
设置表示例

  1. Columns -> | PrintImage | SettMinus | HasChat . . .
  2. --------------------------------------------
  3. Values -> 0 1 1 . . .

还有其他数据 Comment 列的名称。所以我想选择数据:

  1. PrintImage, 0 , Comment of PrintImage;
  2. SettMinus, 1 , Comment of SettMinus;
  3. HasChat, 1 , Comment of HasChat;
  4. .....................................
  5. and so on.
yvgpqqbh

yvgpqqbh1#

这将为您提供列名、列值和注解。但是,您可以使用php获取valuearray[ordinal_position]的值,您还需要在concat_ws之后复制/粘贴其余的列名。
同样,我不能在mysql中做所有的事情,所以它需要phpcodes的帮助才能从数组中获得准确的值。

  1. SELECT s.COLUMN_NAME,
  2. s.ORDINAL_POSITION,
  3. t.valuearray,
  4. s.COLUMN_COMMENT
  5. from INFORMATION_SCHEMA.columns s
  6. cross join (select concat_ws(",", PrintImage,
  7. SettMinus,HasChat) as valuearray from settings) t
  8. where s.TABLE_NAME='Settings';
  9. sample result :
  10. COLUMN_NAME ORDINAL_POSITION valuearray COLUMN_COMMENT
  11. PrintImage 1 0,1,1 commenttest
  12. SettMinus 2 0,1,1 comments too
  13. HasChat 3 0,1,1 3rd comment

相关问题