2013-08-19 59 views
0

自今天早上我開始接受生產網站的這個錯誤,我想知道爲什麼我在UAT或開發環境中得不到相同的結果..Yii CDbException ..整數的輸入語法無效:「1,075」

是否有人熟悉這樣的錯誤?

CDbException 

Description 

CDbCommand failed to execute the SQL statement: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: "1,076" 

Source File 

C:\inetpub\wwwroot\framework1.0\db\CDbCommand.php(372) 

00360:    } 
00361: 
00362:    if($this->_connection->enableProfiling) 
00363:     Yii::endProfile('system.db.CDbCommand.query('.$this->getText().')','system.db.CDbCommand.query'); 
00364: 
00365:    return $result; 
00366:   } 
00367:   catch(Exception $e) 
00368:   { 
00369:    if($this->_connection->enableProfiling) 
00370:     Yii::endProfile('system.db.CDbCommand.query('.$this->getText().')','system.db.CDbCommand.query'); 
00371:    Yii::log('Error in querying SQL: '.$this->getText().$par,CLogger::LEVEL_ERROR,'system.db.CDbCommand'); 
00372:    throw new CDbException(Yii::t('yii','CDbCommand failed to execute the SQL statement: {error}', 
00373:     array('{error}'=>$e->getMessage()))); 
00374:   } 
00375:  } 
00376: } 

附加了截圖..應用程序是基於yii框架和postgress數據庫。

enter image description here

快速回復高度讚賞。

+1

很可能某人在輸入字段之一中輸入了「1,076」作爲數字,並將此未修改發送到數據庫。儘管如此,DB應該是'1.076'。您需要先轉換成正確的格式。 –

+0

或者很可能是'1076';許多人會用千位分隔符寫'1,123.00'(美國/澳大利亞/英國表格)或者'1.123,00'(歐盟表格)。 PostgreSQL不會接受含有數千個分隔符的整數。 –

+0

@CraigRinger不,它在我的開發結束時起作用。所以我想知道這可能如何。此外,數字1,076保持有時更改爲1064 ...也不會發生,由於用戶輸入或類型濫用... – dev1234

回答

0

這個問題實際上是因爲使用number_format()函數到主鍵,然後在代碼部分它輸入格式化的數字來搜索查詢..即選擇*從用戶其中id = 1,075(而不是id = 1075)

更改number_format()函數以僅應用於所選區域的工作。

相關問題