2016-12-07 7 views
0

私はIDが00010002などの単純なデータベースを持っています。 最後のIDを取得し、最後に1を追加する必要があります。IDの増分0001 +1が表示されます2

私はそれを$_SESSION['part_number'] = $part_number + 1;に保存しています。 IDが0001の場合、なぜ2つの結果が得られるのかわかりません。 IDが0010であれば同じですが、正面に00を付けて常に最後のID + 1にしたいと思います。

+3

本当に最初にこれらの000が必要ですか?なぜあなたはそれらを必要としますか?それほどいいことはありません.... 私は問題があなたが整数としてあなたのデータを保存したと思います。整数は文字列として保存する必要があるかもしれませんが、AIは動作しません... – Twinfriends

+1

先頭の0はどこにも格納されず、必要なときにのみ表示されます( 'php.net/str_pad'とfriendsを使用してください) – Kris

+1

ちょうど1、2などを使う...無駄なので、整数は最初に000を持つことはできません。 –

答えて

0

は、以下の

$part_number = (int)$part_number; 
$part_number++ 
$_SESSION['part_number'] = str_pad($part_number, 4, '0', STR_PAD_LEFT); 
+1

本当にそうではありません。コメント内のアドバイスに従い、先行ゼロをどこにも保存しないでください。 – Alnitak

+0

それは疑問ではありませんでしたが、私はそれがベストプラクティスではないことに同意しますが、時にはそれがあなたと協力しなければならないことです。 – JezEmery

-1

使用STR_PAD_LEFT

echo str_pad($_SESSION['part_number'], 4, "0", STR_PAD_LEFT); //0002 

OR

echo str_pad($part_number+1, 4, "0", STR_PAD_LEFT); //0002 
0

PHPは動的型付け言語であるを使用してみてください。奇妙な変換を避けるために、特にデータベースの場合に先行ゼロを使用しないでください。あなたは人生をもっと難しくします。 (AUTO_INCREMENTフィールドはあなたのためにすべての仕事を行い、本当に必要な場合は、MySQL側に先行ゼロを追加することができます)。 0で始まる数字は、PHPを使用した場合は8進数(ベース8)と解釈されるという問題もあります。

ちょうどAUTO_INCREMENTにIDフィールドを変更し、先行ゼロを使用してデータを取得するために、MySQLの機能LPAD()を使用し、SQL側ですべてこれを行うには

SELECT LPAD(id, 4, '0') AS id FROM your_table_name WHERE ...

関連する問題