• 締切済み

PHPの記述の仕方について質問させてください。よろしくお願いします。

PHPの記述の仕方について質問させてください。よろしくお願いします。 私は、phpとmysqlでプログラムされているアプリケーションのプログラム修正をやらなければならなくなり、経験がなくて困っています。 アルファベット最大6文字+数字6桁というようなステータス管理IDを抽出する部分の実現方法なのですが、最新のID(アルファベットの文字列が長いもの)をDBから抽出する時はPHPでどのように書けばよいのでしょうか? 例えば、同じカラムに格納されている数字部分が共通な3つのレコードが存在する時 ABC-123456を抽出したい場合です。 A-123456(←Aが付与されます) AC-123456(←Cが付与されるます) ABC-123456(←Bが付与されます) preg much allとかで出来るのかと思い調べてはいますが、よくわかりませんでした。 どなたか、よろしくお願いします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

'SELECT status_id FROM status WHERE status_id REGEXP "123456$"' とするだけじゃないですか?

coco1000
質問者

お礼

yambejpさま。いつもご教授ありがとうございます。おかげさまでもう少しでわたしの分は終わりそうです。後、最後にアルファベットを規則的に並べるところを悩んでいます。 変数$resultにはACDB-123456が入っている時に、 $logodata=explode("-", $result);こうすると、 $logodata[0]にはデータACDBが入っているはずです。 それでこの文字列ACDBをABCDの文字列に並べ変えるやりかたが知りたいです。 並べ変えた上で例えば次はEを付加して、ABCDE-123456としてstatus_idとして発行したいと思っています。お忙しい中、すみません。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

<? $str=<<<eof testtest testtestA-123456testtest testtestAC-123456testtest testtestABC-123456testtest testtest eof; $pattern="/[A-Z]{1,6}-[0-9]{1,6}/"; preg_match_all($pattern,$str,$matches); print_r($matches); ?>

coco1000
質問者

補足

お忙しい中、早いお返事を本当にありがとうございます!!  もう1つ出来ましたら教えてください。 アルファベットは最大6桁まで増えていきます。 これらのレコードはstatusテーブルのstatus_idカラムにあるのですが、 status_id AD-111111 A-111112 AF-111112 AC-111113 ABC-111113 A-123456←抽出したい AC-123456←抽出したい ABC-123456←抽出したい DBから抽出して配列に格納したいのですがこれでよろしいのでしょうか。。。うまく動かなくて。 $dbh = Kether_DB_Factory::getHandle(); $res_result = $dbh->selectVal('SELECT status_id FROM status WHERE status_id REGEXP 123456$' , array());

関連するQ&A