2016-07-10 72 views
0

據我所知,「TABLE」名稱區分大小寫(取決於操作系統,Linux或Windows),但我發現字段名稱也區分大小寫。我讀了幾個地方說他們不是。我在表名上找到很多信息,但在FIELDNAMES上沒有太多信息。mysql case exsesitive field names

但是這個例子給出了一個錯誤的抱怨。

字段名=「姓名」 如果我這樣做 - 它的錯誤了

編輯:忘了:找一個運行時間修復,因爲這不是我的分貝。

SELECT * FROM some_table WHERE name = 'something' 

,除非我改變'name''Name'這得到一個錯誤。 2問題 如果這是我的錯誤,我是什麼東錯? 如果沒有,是否有一個標誌來設置來控制這個。看起來像開發人員與數據庫monkey,一般時,他們有時會因爲w/e原因而改變字段,最後是camelCase。

這似乎是我必須編寫冗餘代碼來區分區分大小寫的搜索。 (這就是爲什麼我認爲我可能會出錯)

謝謝!

+0

我實際上重做不同這一點,顯然誤差不從查詢本身從從結果字符串[代碼]而($結果= mysql_fetch_assoc($ SQL)){ 回聲$結果['名稱「]; } [/ code]結果是區分大小寫的 - 我該如何防止呢? – Cain

+1

[「列,索引,存儲例程和事件名稱在任何平臺上都不區分大小寫,也不是列別名」](http://dev.mysql.com/doc/refman/5.7/en/identifier-case- sensitivity.html),所以請發佈確切的'CREATE TABLE'和錯誤輸出。 – bishop

回答

-1

我認爲你的機器爲MySQL的lower_case_table_names系統變量設置爲0,這是區分大小寫

如果設置爲0,表名被存儲爲指定和比較是大小寫敏感的。如果設置爲1,表名將以小寫形式存儲在磁盤上,並且比較不區分大小寫。如果設置爲2,則表名按照給定值存儲,但以小寫字母進行比較。該選項也適用於數據庫名稱和表別名。

僅供參考,請點擊以下鏈接。 http://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html

我希望這將解決您的問題

0

這是基於您的評論,PHP是案件回聲$結果[「標題」]敏感;

這是一個PHP函數,它允許您在PHP中爲關聯數組使用不區分大小寫的索引。

$test = array("Name"=>"Russell"); 
echo value($test,"name"); 

function value(&$row,$field) { 
    // Get the value of a field. 
    foreach($row as $key=>$value) { 
     if (strcasecmp($key,$field)==0) { 
      return $value; 
     } 
    } 
    throw new Exception("Field $field wasn`t found."); 
} 
+0

感謝拉塞爾,我認爲tricfk,我希望我誤解了文檔,並認爲有一個開關,我可以在SELECT查詢中使用。您可以在.ini文件中對其進行硬編碼,但不是真正的大道。我想去。我會修補這個,看看它的工作原理。 – Cain