【问题标题】:PHP: Get values from a column using its namePHP:使用其名称从列中获取值
【发布时间】:2014-02-28 00:30:32
【问题描述】:

是否可以从知道列名的数据库中获取所有值?我有一个这样的数据库:星期几使用代码编号和一些包含每天信息的行。当用户询问时,我想发送那天的所有信息。

id      1         2         3

1       Info    Info     Info
2       Info    Info     Info

到目前为止,我有这个:

 // I know the know of the column and I want to compare it with the week code 
 //   of today so they can get the info for today
        $day=date(w);
        $conn = mysqlConnector();
        $cols = $conn->prepare('SELECT * FROM cond WHERE COLUMN_NAME = :col LIMIT 1000 OFFSET 1');
        $cols->execute(array('col'=> $day));

我不确定是否应该使用 COLUMN_NAME 或如何使用它,但此代码不起作用。任何想法?谢谢大家

【问题讨论】:

  • 所以你想从第 2 列获取所有信息?它应该返回“信息”和“信息”?
  • 没错!之后我使用json发送,但这无关紧要

标签: php mysql database mysqli


【解决方案1】:

您不能将列名用作 SQL 绑定变量。

从您的问题中不清楚您的列名是什么。 编辑他们似乎是12等。

您可以使用类似这样的 SQL 语句:

SELECT `1` FROM cond LIMIT 1000 OFFSET 1

要在 php 中执行此操作,您需要执行类似的操作以使用

创建查询
`1`

作为文字插入其中。

$day = 1;
...
$cols = $conn->prepare("SELECT `$day` 
                          FROM cond 
                         WHERE COLUMN_NAME = :col
                         LIMIT 1000 OFFSET 1");
$cols->execute();

你应该小心这个;确保 $day 的值不会被恶意用户破坏。

您还应该注意确保您的列名(恰好是整数)被反引号括起来:

SELECT 1 FROM cond

会返回一串1,但是

SELECT `1` FROM cond

将返回您的数据。

【讨论】:

  • 是的,我编辑了问题以使其更清楚。代码获取列的值,因此它必须返回具有该名称的列的内容。
  • 谢谢!我试过了,我得到这个错误:错误:SQLSTATE [42S22]:找不到列:1054 Unknown column '$day' in 'field list'
  • 尝试以字母字符开始每一列。 IE。 d1,d2,d3。然后在您的查询中将其设为'd$day'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 2015-02-24
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 2021-01-08
  • 2015-06-04
相关资源
最近更新 更多