今天被一個 Bug 困住好久,可能是之前自己的手誤造成!!
原因就是...MySQL 的欄位名稱竟然可以使用空白字元,而且還可以放在第一個字元,我真是學藝不精!!
經測試,連資料表的名稱也可以使用空白字元:
CREATE TABLE ` test table` ( ` field 1` TINYINT NOT NULL , PRIMARY KEY ( ` field 1` ) ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;
上面看得出我在資料表與欄位的名稱都用了空白字元嗎? 而且還是放在第一個字元!我想,如果想要陷害別人絕對可以用 MySQL 這一招。至於處理空白欄位名稱的問題,你可以:
- 將錯誤的欄位名稱改掉。
- 存取資料表與欄位時,在前後加上 ` `,例如: ` test table`.` field 1`。
沒有留言:
張貼留言