私はMySQLでPHPで作成したパーツ管理システムを持っています。私が作成しようとしているのは、私にとって次の部品番号を生成するものです。すべての部品番号は3文字の接頭辞(製品ファミリ/カテゴリによって決まります)から始まり、番号が続きます。例えばPHPでwhileループを使ってデータベースクエリの次の数字を決定
「ABC001」
私は以下の持っていることは、私は私が望むように、次の番号が既に「ABC001」、「ABC002」&「ABC003」を有するれるかを決定するために使用したいものですその製品番号がまだ存在しないため、クエリーが偽になるまでクエリーを実行することによって、次の番号が何であるかを認識することができます。
$abc_query = "SELECT * FROM products WHERE id LIKE 'ABC%'";
$abc_result = $mysqli2->query($abc_query);
while($row = $abc_result->fetch_assoc()) {
\t \t $rowid = $row["id"];
\t \t $pnumber = substr($rowid, 3, 3);
\t \t echo $pnumber. '<br/>';
\t \t $int = (int)$pnumber;
\t \t $abc_query2 = "SELECT * FROM products WHERE id 'ABC" . sprintf('%03s', $int);
\t \t
\t \t for ($abc_query2 = true; $abc_query2 = false; $int++){
\t \t \t echo $int;
\t \t }$abc_nextnumber = $int +1;
}
$abc_newnumber = 'ABC' . sprintf('%03s', $abc_nextnumber);
echo $abc_newnumber;
私が得る結果は結果がでなければなりません。しかしながら
001
002
003
ABC004
コード更新私は、コードを更新しました
001
002
003
005
ABC006
が、それはseではない私は005を持っている場合、誰もが知っている場合、EMは、私はそれはそれ一度0の異なる量になりますよう、それは(クエリへの自動ゼロを追加することができますどのようにそれは006
mysqlはABCの列を分割していない理由は、その上で '最大の()'選択し、整数に残りをキャスト? – cowbert
それは難しいですか?私はデータベースをまったく変更したくありません。 – Spence