0

我试图在任何地方找到解决方案,但谷歌提供的任何东西似乎都不适用于我的具体情况。

我的表有 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 ");
        }
                    }
4

2 回答 2

1

架构对象名称下所述:

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

[ deletia ]

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

[ deletia ]

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

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

UPDATE ttcomp SET `0` = 'Y' WHERE ...
于 2013-04-27T19:41:24.293 回答
1

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

UPDATE tablename SET `".$variable."`= whatever
于 2018-12-18T15:52:24.907 回答