2017-05-12 28 views
0

我遇到了PHP和Oracle數據庫的問題。在表中插入數字變成奇怪的數字

當我從PHP中插入一個數字表時,表中的數字變成奇怪的數字。 例如,當我從PHP運行查詢向表中插入數字'1'時,它不會存儲數字'1',而是存儲到另一個數字(如'4294967296')。 當我插入數字'10'時,它變成'4294967306',依此類推。數據類型是NUMBER(10,0)。

oracle table

當我改變到如MySQL另一個數據庫具有相同的表結構是沒有問題的。當我插入'1'時,它也會存儲'1'。我將程序上傳到Ubuntu服務器後也沒有問題。 Oracle從PHP中存儲相同的編號。

我使用Laragon在Windows筆記本電腦上開發了Laravel Framework的PHP程序。

我不知道是什麼問題。是PHP,我的筆記本電腦,Laravel,Laragon還是Oracle?

謝謝你的幫助和解答。

+1

您能告訴我們您的php代碼嗎?你如何插入它? – JSapkota

+0

我正在使用雄辯的Laravel。我的代碼:'$ user = new User; $ user-> id = 1; $用戶>名= 'lolol'; $ user-> username ='lolol'; $用戶> active_directory = 0; $ user-> save();' –

+0

我只是發現,當我插入使用原始代碼時,也沒有問題。 'DB :: insert('insert into users(id,username,name,email,active_directory,domain)values(?,?,?,?,?,?)',[10,'dayle','Dayle' ,'dayle','0','esdm']);'。 但是,當我使用'$ user-> save()'它不起作用。 –

回答

0

我正在使用mutator將屬性強制轉換爲字符串。因爲,如果我將字符串('0')插入到表中而不是整數(0),它將起作用。以下是用戶模型中的增變器:

//other User model methods.... 
    public function setActiveDirectoryAttribute($attrValue){ 
     $this->attributes['active_directory'] = (string) $attrValue; 
    }