在我的數據庫中有一個名爲設置的表。它有兩列,分別是name
和value
。設置表中的varchar字段中的前導零位
我試圖插入一個電話號碼,例如0612345678
。
它不斷移除前導零(結果612345678
)。
我使用$value = strval($value);
來確保PHP將值作爲字符串傳遞(我可以確認,工作)。
這是MySQL的默認設置還是我可以解決這個問題?
在我的數據庫中有一個名爲設置的表。它有兩列,分別是name
和value
。設置表中的varchar字段中的前導零位
我試圖插入一個電話號碼,例如0612345678
。
它不斷移除前導零(結果612345678
)。
我使用$value = strval($value);
來確保PHP將值作爲字符串傳遞(我可以確認,工作)。
這是MySQL的默認設置還是我可以解決這個問題?
如果你想保持前導零,你需要將值存儲在一個字符串列中(現在我認爲這是一個整數現在在PHP或MySQL中)。
另一種選擇是增加的數量的同時選擇(不推薦)
SELECT LPAD(Column, <lengthOfOriginalNumber>, '0')
colums是'varchar' ...所以它是一個字符串列... – LinkinTED
它看起來像要麼php
或MySQL
被轉換的電話號碼爲number
,因此,前導零被剝離。
如果是php
那麼你可以使用strval
函數來獲取字符串值(解釋here)。此外,您可以嘗試打印該值,然後將其發送到MySQL
以查看轉換後的結果。
如果是MySQL
那麼你需要改變列類型爲varchar
,例如:
ALTER TABLE table MODIFY phone_number VARCHAR(20);
這兩個轉換已經存在。 OP已經提到有問題 –
謝謝你的回答,但是,我用'strval',看問題。我使用一個varchar列,看標題。 – LinkinTED
@LinkinTED在這種情況下,您可以嘗試在轉換後在控制檯中打印'$ value',以查看新值是什麼? –
整數值不能以'value' 0 –
數據類型開始呢?顯示你的「CREATE TABLE」命令。 –
如果它的varchar,它應該是字符串,並且不會刪除任何前導零。你說你確認從PHP它的正確價值?你能展示你如何插入它? – Qirel