PHP:使用名称从列中获取值

时间:2014-02-28 00:30:32

标签: php mysql database mysqli

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

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或如何使用它,但此代码不起作用。任何的想法?谢谢大家

1 个答案:

答案 0 :(得分:2)

您不能将列名用作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

会回馈您的数据。