为什么此查询返回具有不同大小写的列名?

时间:2011-11-10 17:06:34

标签: php mysql

我有一个名为roster_id的列的mySQL表(在表结构中都是小写的。)我正在尝试在我的php中设置一个变量,并且值没有设置。

$contacts2 =  $db->get_results("SELECT * FROM roster WHERE status = 'pending'");
foreach ($contacts2 as $contact2) {
   $roster = $contact2->roster_id;
}

$roster没有设置好,所以我在print_r上做了$contacts2,这就是我得到的:

Array
(
    [0] => stdClass Object
        (
            [roster_Id] => 12
            [people_id] => 182759
            [company_id] => 1
            [first_name] => Dennis
            [last_name] => Menace
            [title] => Test Account
            [email] => esther@esthermstrom.com
            [address1] => 1105 Test Pkwy
            [address2] => 
            [city] => Chicago
            [state_id] => 13
            [country_id] => 183
            [zip] => 60613
            [phone] => 333-333-3333
            [sm] => 1
            [lu] => 1
            [status] => pending
        )

)

roster_idroster_Id的形式返回。知道为什么会这样吗?我可以通过改变php来使用备用拼写来解决它,但如果我不知道是什么原因导致它,我将永远不会有信心它不会突然改变回正确的情况

我不知道它是否有所作为,但我们正在使用ezSQL数据库类。

1 个答案:

答案 0 :(得分:3)

如果按原样返回roster_Id,那么它就是这样创建的。在架构中更改它。你说“表结构中的所有小写字母。”但没有说你是如何检索架构的。尝试使用SHOW CREATE TABLE,然后使用ALTER TABLE将其缩小。 MySQL不介意:http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

  

列,索引和存储的例程名称在任何平台上都不区分大小写,列别名也不区分大小写。

编辑:我为您检查了ez_sql源代码,这是检索结果的方式:

while ( $row = @mysql_fetch_object($this->result) )
{
  // Store relults as an objects within main array
  $this->last_result[$num_rows] = $row;
  $num_rows++;
}

它不是在操纵列。它也不会对你的查询字符串做任何真正邪恶的技巧。不,这是一个相当简单的工具,所以这样的问题只能来自数据库。