2013-04-27 83 views
0

我試圖在任何地方爲此找到解決方案,但Google給出的任何東西似乎都不適用於我的特定情況。作爲mysql列名的php變量

我的表有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

**請**詢問需要完成的任務,[未設計的解決方案](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – 2013-04-27 19:01:00

+0

SQL注入當我們將變量直接用於SQl時,吸引人應該與你的代碼一致。並且Ua使用不推薦的mysql – underscore 2013-04-27 19:01:02

+0

親愛的你的常識,你可以在你說任何事之前仔細閱讀它。我相信我已經清楚地說明了我的問題,並且爲了提高效率,我表示了我已經嘗試過但沒有工作的內容。你的演講是不必要的,並且放錯了位置。 – BernardA 2013-04-27 19:12:26

回答

1

由於Schema Object Names下記載:

在不帶引號的標識符

允許的字符:

[ deletia ]

  • 標識符可以以一個數字,但除非援引開始可能不完全的數字由。

[ deletia ]

的標識符引號字符是反引號(「`」):

因此,如果您必須名這樣的列(和,真的,你應該找到一些其他的解決方案),你將需要引用反引號:

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