我創建一個PHP腳本插入到一個數據庫命令的基礎上,使用會話數組存儲在關聯數組的訂單數據庫$ _SESSION ['大車']。該數據庫看起來是這樣的:選擇(最大)不會超過10 - mysql與phpmyadmin
orders
----------+--------------+-------------+-------------+-------------+
Id | Username | Item1Id | Item2Id | Item3Id |
----------+--------------+-------------+-------------+-------------+
1 | [email protected] | 8000001 | 8000002 | 800003 |
----------+--------------+-------------+-------------+-------------+
5 | [email protected] | 7000001 | 6000002 | 700003 |
----------+--------------+-------------+-------------+-------------+
7 | [email protected] | 8000001 | 8000002 | NULL |
----------+--------------+-------------+-------------+-------------+
10 | [email protected] | 3000001 | 1000002 | 800009 |
----------+--------------+-------------+-------------+-------------+
ID列類型是CHAR(20),我可以選擇以後使用字母。
作爲插入行的一部分,我需要爲訂單行分配一個Id(主鍵),該行將被設置爲1,高於發現的當前最高Id號。
整個腳本完美地工作;查詢查找表中的最高Id,然後將其遞增1並將其分配給一個變量以用作插入查詢的一部分。唯一的問題是,「SELECT MAX(Id)FROM orders」似乎找不到高於9的任何內容。有沒有一種情況可以防止SELECT MAX(Id)識別兩位數字的內容?
我知道了這樣寫:
$highestID = mysqli_query($conn, "SELECT MAX(Id) FROM orders");
$orderID = $highestID +1;
我已經清空數據庫,除了標識numbers1和2運行PHP腳本插入除非它與ID號3,4,5新行得到10,腳本無法產生,因爲它產生重複的主鍵'10'(從$ orderID的值)的錯誤。即使用Id'25'手動輸入數據庫行,$ orderID仍然只會在返回結果時返回'10'。
我還沒有設置任何具體的限制,可以輸入的行或類似的東西。
使用'cast' - '選擇orders'最大(投(編號爲無符號))。 – Jack 2013-05-07 23:45:15