2016-07-10 35 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