2013-12-21 32 views
0

這很奇怪。我使用PHP 5中的MySQLi,並執行以下查詢時,我結束了一個錯誤在我的httpd日誌類似如下MySQL未知列錯誤,但結果看起來不錯,並且查詢在phpMyAdmin中有效

[error] [client 192.168.0.1] Unknown column 'memberid' in 'where clause', referer: http://www.example.com/app/add-device 
[error] [client 192.168.0.1] fetch_row[0] failed, referer: http://localhost/app/add-device

查詢本身

 
     $this->db->query(' 
          SELECT 
           `members`.`id`, 
           `members_timezones`.`timezone`, 
           `members`.`memberid` 
          FROM 
           `members` 
          RIGHT JOIN 
           `members_timezones` ON `members_timezones`.`memberid` = `members`.`id` 
          WHERE 
           `members`.`systemid` = ' . SYSTEM_ID . ' 
           AND 
           `members`.`memberid` = ' . intval($this->user->uid) . ' 
           AND 
           `members`.`user` IS NULL 
          LIMIT 1 
         '); 

只是爲了澄清,該上面的查詢確實會對預期的結果做出響應,但是我的httpd日誌被垃圾郵件發送,並聲明該列在其存在時不存在。它還聲稱'fetch'沒有返回任何東西 - 它也是如此。

我想從我的系統中消除這個錯誤的錯誤。

----- ------ ADDED

查詢結果

 
id timezone memberid 
12 America/New_York 2 

查詢結果(講解)

 
id select_type table partitions type possible_keys key key_len ref rows Extra 
1 SIMPLE members_timezones NULL ALL NULL NULL NULL NULL 2  
1 SIMPLE members NULL eq_ref PRIMARY PRIMARY 4 linked24.members_timezones.memberid 1 Using where 

成員

 
Column Type Comment 
id int(11) Auto Increment 
details text NULL  
user varchar(35) NULL  
pass varchar(512) NULL  
entered timestamp NULL [0000-00-00 00:00:00]  
updated timestamp NULL 
pass_key varchar(32) NULL 
systemid int(11) 
memberid int(11) 

members_timezones

 
Column Type Comment 
id int(11) Auto Increment 
memberid int(11) 
timezone varchar(80) [UTC] 
+2

您確定這是導致這些錯誤的腳本或查詢嗎? – Barmar

+0

「SYSTEM_ID」是否始終爲數字? –

+0

代碼看起來不錯,所以我會檢查列名,因爲名稱區分大小寫。 – jeff

回答

0

我能夠走樣正在使用的所有領域,以解決此問題。

SELECT Table.Field As Field FROM Table 

不確定爲什麼這個工作,但我的內容是沒有進一步的錯誤被報告。