0
0

varchar型 自動採番について

Last updated at Posted at 2023-12-16

目的

"S0001"などの文字列を含んだIDを生成するfunction

フロー

str_padを使って文字列にデータ件数+1の数値を結合する

テーブル

Userテーブル

id user_num name
1 S001 山田
2 S002 伊藤
3 S003 鈴木

書いてみた

function get_user_num($dbh) {
        $sql = "SELECT * FROM User";
        $stm = $dbh->query($sql);
        $rows=$stm->fetchAll(PDO::FETCH_ASSOC);
        $count = count($rows);
        if ($count == 0) {
            $user_num = "S0001";
        } else {
            $user_num = "S" . str_pad($count + 1, 4, 0, STR_PAD_LEFT);
        }
    return $user_num;
}

rowCountdで件数を取得しようとしたがSELECT文では非推奨

PDOStatement::rowCount() は 相当する PDOStatement オブジェクトによって実行された 直近の DELETE, INSERT, UPDATE 文によって作用した行数を返します。
SELECT文のような、結果セットを生成するSQLステートメントについては動作が未定義です。 動作はドライバによって異なる可能性があります。 データベース(例: MySQL のバッファリングモード)によっては、文によって返された行数を返すかもしれません。しかしながら、 この振る舞いは全てのデータベースで保証されていません。 さまざまな場所で使用するアプリケーションでは、 これに頼ってはいけません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0