2012-07-03 29 views
0

由於某些原因,我的一些SQL查詢似乎處理奇怪的數字。例如,在mySQL數據庫中,我有一個名爲points的用戶名爲INT(11)的表。當我嘗試檢索這個字段時,有時它會正確返回,而其他時候它會返回null。該查詢返回"User fMcBBx has points according to database"每次:MySQL或Zend有時會返回空值而不是數字

$query = "SELECT points FROM users WHERE user_id = '$this->getID()'"; 
    $result = DBCore::call()->fetchRow($query); 
    echo "User {$this->getID()} has {$result['points']} points according to database"; 

雖然這一個從我的構造正確每次返回數字,如"User fMcBBx has 1050 points according to database"

SELECT first, 
     last, 
     email, 
     points, 
     level, 
     gender 
FROM users 
WHERE user_id = '{$this->id}' 

我還沒有發現任何的模式在做查詢並且不要正確返回此字段。我已經通過在PHPmyAdmin中針對數據庫運行它們來檢查它們,以確保它們都工作正常,並且我已經回顯了所有輸入值以確保它們正確傳輸。爲什麼我可能會在某些查詢中得到空值,但不是其他值呢?

+0

如果您可以提供一些測試數據和查詢來重現此行爲,那將會很好。看看你的問題,我不明白爲什麼這些查詢會產生不同的結果。 – dcp

+0

它是否總是返回空值的查詢相同,或者在不同的時間運行相同的查詢返回不同的東西?從你的問題來看並不完全清楚,但我懷疑它是前者。如果我們能看到一些失敗的查詢,以及表和一些示例數據的結構,這將有助於迴應@dcp。 – andrewsi

+0

是什麼讓你覺得它返回null?爲什麼它不會返回任何一行?你爲什麼認爲這是查詢?爲什麼你認爲它不可能是你的this.getID()參數在不同的時間可能會不同? – Sebas

回答

0

當我在第一個查詢$query = "SELECT points FROM users WHERE user_id = '{$this->getID()}'";的函數調用中加上大括號時,它可以很好地工作。 Php不能以它能夠讀取變量的方式評估雙引號字符串中的函數調用,在函數調用周圍放置大括號可以使它正確評估函數調用。