php变量作为mysql列名

I tried to find solution for this about everywhere, but nothing Google gave seems to work for my specific case.

My table has 4 columns that I want updated that I have named 0, 1, 2, 3, conveniently as I have to loop through it to update. Here is one instance of the column structure :

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

Now I want to set the value to 'Y' using this loop, but it will not accept the way I am referring to the $i variable within the query.

See below my last attempt. I also tried to cast $i as int, but that did not work either.

I appreciate your guidance on this.

                     /* 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 ");
        }
                    }

As documented under Schema Object Names:

Permitted characters in unquoted identifiers:

[ deletia ]

  • Identifiers may begin with a digit but unless quoted may not consist solely of digits.

[ deletia ]

The identifier quote character is the backtick (“`”):

Therefore, if you must name your columns in this way (and, really, you should find some other solution), you will need to quote them with backticks:

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

You can use a php variable as the name of a SQL column like this.

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