使用预设变量来提取列名称,然后在查询中使用它

时间:2013-02-27 09:25:31

标签: php mysql

我正在尝试为预订公司创建定价系统,我有一个充满价格的数据库表。典型的行如下所示:

priceID  |  manufac  |  model  |  janDay  | janWeek  |  febDay  |  febWeek  |  etc etc
--------------------------------------------------------------------------------------
1        |Chevrolelt |  Matiz  |  40.00   |  133.00  |  40.00   |  133.00   |  etc etc

基本上我有一个变量:

$startmonth

此变量由我的代码设置,用于查找月份,并根据其编号为其分配值。在这个例子中,我们假设它已经完成并获得了值:

$startmonth = 'febWeek';

然后我有另一个查询找出汽车的模型,我测试了它并返回模型,所以我们知道:

$model = 'Matiz';

然后我执行另一个查询以获得价格:

$getprice = mysql_query("SELECT '".$startmonth."' FROM prices WHERE model = '".$model."' ");
while($ppdrow = mysql_fetch_assoc($getprice)) {

   $priceperday = $ppdrow;

}

我已经尝试了很多方法,但我总是会遇到错误或不良后果。何时返回 133.00

实际返回的内容:

( [2] => 2 )

我可能会做一些非常愚蠢的事情,但有人可以告诉我什么吗?

2 个答案:

答案 0 :(得分:3)

你可以试试这个

$getprice = mysql_query("SELECT ".$startmonth." FROM prices WHERE model ='".$model."'   ");
while($ppdrow = mysql_fetch_assoc($getprice)) {

 $priceperday = $ppdrow[$startmonth];

}

答案 1 :(得分:2)

请尝试此查询:

$getprice = mysql_query("SELECT `".$startmonth."` FROM prices WHERE model = '".$model."' ");

请注意单引号位置的反引号(列名称周围)。

至于while循环,您试图将$priceperday设置为等于$ppdrow,这是一个数组。您希望将其设置为数组中的正确值(列)

while($ppdrow = mysql_fetch_assoc($getprice)) {
   $priceperday = $ppdrow[$startmonth];
}

另请阅读why not to use mysql_*