我试图在任何地方找到解决方案,但谷歌给出的任何内容似乎都不适合我的具体案例。
我的表有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 ");
}
}
答案 0 :(得分:1)
正如Schema Object Names所述:
不带引号的标识符中允许的字符:
[ deletia ]
- 标识符可以以数字开头,但除非引用可能不仅仅由数字组成。
[ deletia ]
标识符引号字符是反引号(“
`
”):
因此,如果必须以这种方式命名列(并且,实际上,应该找到其他解决方案),您需要使用反引号引用它们:
UPDATE ttcomp SET `0` = 'Y' WHERE ...
答案 1 :(得分:1)
您可以使用php变量作为这样的SQL列的名称。
UPDATE tablename SET `".$variable."`= whatever