php变量作为mysql列名

时间:2013-04-27 18:57:02

标签: php mysql

我试图在任何地方找到解决方案,但谷歌给出的任何内容似乎都不适合我的具体案例。

我的表有4列我想要更新,我已经命名为0,1,2,3,方便,因为我必须循环它以进行更新。 这是列结构的一个实例:

 column name 0 ENUM('Y','N') null=no default='N'

现在我想使用这个循环将值设置为'Y',但它不会接受我在查询中引用$ i变量的方式。

请参阅下面的最后一次尝试。我也尝试将$ i转换为int,但这也不起作用。

感谢您对此的指导。

                     /* update versions columns to Y where applicable */
        for ($i=0;$i <= $ctvid-1;$i++){
        $sql = mysql_query (
        "SELECT trim_id
        FROM versiontrim
        WHERE (
        version_id =$arr_vid[$i]
        )");
        $escapedi=mysql_real_escape_string($i);
        while ($row1 = mysql_fetch_assoc( $sql ))
        {
        $r=$row1['trim_id'];
        mysql_query ("UPDATE ttcomp SET '".$escapedi."' ='Y' where         trim_id=$r ");
        }
                    }

2 个答案:

答案 0 :(得分:1)

正如Schema Object Names所述:

  

不带引号的标识符中允许的字符:

     

[ deletia ]

     
      
  • 标识符可以以数字开头,但除非引用可能不仅仅由数字组成。
  •   
     

[ deletia ]

     

标识符引号字符是反引号(“`”):

因此,如果必须以这种方式命名列(并且,实际上,应该找到其他解决方案),您需要使用反引号引用它们:

UPDATE ttcomp SET `0` = 'Y' WHERE ...

答案 1 :(得分:1)

您可以使用php变量作为这样的SQL列的名称。

UPDATE tablename SET `".$variable."`= whatever