2017-01-07 61 views
0

我有一些表在我的數據庫與類型BIGINT列: enter image description here設定值在PHP低於0讓0

的問題是,當我設置(通過更新或插入)值比0(對示例-2),然後在數據庫中設置爲0. enter image description here

有人知道爲什麼嗎?

(我沒有任何程序在插入/更新之前更改此值)。 Db是MySql

+1

你正在使用一個unsigned int,它不允許使用負數。您可以在這裏閱讀:https://msdn.microsoft.com/en-us/library/ms187745.aspx關於SQL中的bigint –

+0

的確如此。謝謝! – DarSta

回答

1

它看起來像你的數據庫實際上使用的是一BIGINT UNSIGNED,其具有範圍爲0至18446744073709551615.而按照MySQL Reference Manual

當外的範圍內的值被分配噸o整數列,MySQL存儲表示列數據類型範圍的相應端點的值。

這意味着試圖存儲在任何UNSIGNED列中的負數將返回到0。

爲了解決這個問題,最好明確設置數據類型爲BIGINT SIGNED

4

您可以閱讀unsigned bigint和signed bigint之間的區別。 MySQL Bigint

無符號BIGINT值:0到18446744073709551615
而符號的BIGINT值:-9223372036854775808到9223372036854775807
所以,你必須使用符號的BIGINT

+0

太棒了!非常感謝。 – DarSta