【问题标题】:MySQL Column name defined by php variables [closed]由php变量定义的MySQL列名[关闭]
【发布时间】:2020-11-27 02:51:24
【问题描述】:

是否可以在 mysql 中创建一个将列名定义为 php 变量的表?

我有一个名为 $stretch[];的数组

从一个点到另一个点是一系列年份,例如:2005-2020。

我想将此数组指定为 MySQL DB 中数据库列的列名。

我知道一个简单的问题。但我似乎无法在网站内的任何地方找到答案。

【问题讨论】:

  • 你有没有尝试过?您是否查看过在 MySQL 中创建表的语法?如何从 PHP 对 MySQL 执行命令?如何根据您的值构建字符串?你具体卡在哪里了?您不太可能找到自定义场景所需的确切代码的另一个示例,但构建该代码的每个组件都是现成的。
  • 它更多的是我坚持的阵列。我知道如何创建一个表,我知道我可以用变量定义列。我只是不确定如何以同样的方式使用数组。
  • 有可能,但我想知道您为什么要这样做。它也可能容易注射。
  • 你有什么建议?
  • 它是一个临时的 SESSION 表,将随会话一起销毁。

标签: php mysql arrays database variables


【解决方案1】:

您可以通过数组foreach 构建一个字符串,或者假设它们的类型和长度相同(了解这一点很重要):

$columns = implode(" VARCHAR(255),", $stretch) . " VARCHAR(255)";

// if numeric column names need to be escaped use backticks
$columns = "`" . implode("` VARCHAR(255), `", $stretch) . "` VARCHAR(255)";

$query   = "CREATE TABLE table_name ($columns)";

产生类似:

CREATE TABLE table_name (2020 VARCHAR(255),2021 VARCHAR(255))

或者:

CREATE TABLE table_name (`2020` VARCHAR(255), `2021` VARCHAR(255))

【讨论】:

  • 列名不能全是整数,除非它们被转义,最后我记得,这是非常糟糕的设计,恕我直言。
  • 好的。那么这也会产生所需的列数量吗?非常感谢你的helo顺便说一句。 ——
  • 感谢@FunkFortyNiner 编辑...
猜你喜欢
  • 1970-01-01
  • 2016-04-06
  • 2014-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多