[過去ログ] 【PHP】下らねぇ質問はここに書き込みやがれ 13 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(2): (アウアウクー MM6f-zbgo) 2021/09/09(木)09:38 ID:eDlF7Xc4M(1) AAS
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
★スレ立て時 ↑ が3行以上になるようコピペ

PHPに関する質問スレです

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 12
2chスレ:tech

次スレは>>980以降 VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
983: (ワッチョイ 9f63-E+l9) 2022/09/19(月)13:19 ID:zeLiCYh20(1) AAS
カートに入れる処理はトランザクション二する必要がない
利用者が自分の意志で取り消すケースもあるわけだし
必要なのは、利用者が決定ボタンを押して、購入完了になるプロセスくらいじゃないかな
一つしかない商品を他の利用者と競合して購入したかもしれないし
複数種類を購入した際に、一つが在庫不足になってたかもしれない
そういうときに、決定ボタンを押す直前までロールバックが必要になる
984: (ワッチョイ ffbb-AZvI) 2022/09/19(月)14:16 ID:8Jf173KW0(1) AAS
トランザクションとかセッションとかは文脈で定義される範囲が変わるのでちゃんと意識して書いたほうがいい

その上で、今回はDBのトランザクションのことだとエスパーして回答すると設定される範囲は間違い
記述がないので何をトランザクション処理として設定するかは回答できないけど、「ユーザの決済処理」「在庫処理」あたりがひとまとまりになると思う

入門書で記述されるトランザクションとついでにプリペアドステートメント(プレースホルダ)処理はデータベース側の処理なので入門書から離れてデータベース側の処理をデータベースの公式を参照しながら学習すると良い
985: (ワッチョイ ff97-W3aP) 2022/09/19(月)16:01 ID:TYV9CYn40(2/2) AAS
みなさんありがとうございました。
良くわかりました!
986: (ワッチョイ ff97-W3aP) 2022/09/20(火)00:39 ID:Sb2Kpzh+0(1/5) AAS
phpmyadmin にINT型でUNSIGNED(整数マイナスを除く)に設定したカラムがあります。
直接phpmyadmin上でこのカラムのデータに対して、SQL文でマイナスの値をUPDATEしようとすると

以下のようなアラートが返ってきます。ただし、データは0の値になります。
Warning: #1264 Out of range value for column 'test_int' at row 7

phpから、PDO接続で同じようにUPDATEしたとき、エラーとさせて入力を拒否したいのですが方法がありますでしょうか?

try-catch文で、以下のようにしたものの、ただ値が0になるだけしかなりませんでした。
良いアイデアがあれば教えてください。

$a =-100;
try {
$ps = $db->prepare("UPDATE tb2 SET test_int = :a WHERE nam = 'タヌキ'");
省7
987: (ワッチョイ 9f63-E+l9) 2022/09/20(火)09:09 ID:Sk0Tcp2N0(1/3) AAS
UPDATE以前二範囲チェックをPHPで行えば?
988: (ワッチョイ ffbb-AZvI) 2022/09/20(火)09:18 ID:fhvmpEXe0(1) AAS
試してないけどMySQL側に警告じゃなくてエラーを返すモードがあるみたい
外部リンク[html]:dev.mysql.com

TRADITIONAL を有効にすることでエラーを返すようになるみたい
989: (ワッチョイ 9701-jQT+) 2022/09/20(火)12:21 ID:F74Rs01Q0(1) AAS
事前チェックが嫌な理由はなんだろ
990: (ワッチョイ 9f7c-E+l9) 2022/09/20(火)15:40 ID:r8LO5qc30(1/2) AAS
普通はバリデーションをしてSQLでエラーにならない値を設定するかなと
SQLでのエラーは想定外の事が起きた場合に限る感じ
991: (ワッチョイ ff97-W3aP) 2022/09/20(火)15:44 ID:Sb2Kpzh+0(2/5) AAS
ありがとうございます。

事前チェックが良いですね。ありがとうございます。

データベースからのエラーを拾いたいのは、
トランザクションのコミットかロールバックの判断を
try-catchで補足しないといけないかと、
勝手に思っていたからです。
(多くの参考書がtry-catch文で判断していたから)

でも、処理毎にエラー文を配列に格納して、
最後の処理の後に、配列の内容の有無を確認して、
トランザクションの判断をすればいいですね。
992: (ワッチョイ 9f63-E+l9) 2022/09/20(火)15:59 ID:Sk0Tcp2N0(2/3) AAS
トランザクション処理でその様なエラーを拾わせるって
まずくね?
たぶん、クライアントから受け取ったデータだと思うし、
それって単独で許容値かどうかを判断出来ると思うんだよ
Web画面経由なら、クライアント画面にエラー表示させて
再入力を促せると思うんだ
そうすればどう言うエラーか判断する必要もないよね
993: (ワッチョイ 9f7c-E+l9) 2022/09/20(火)15:59 ID:r8LO5qc30(2/2) AAS
バリデーション
 問題があればここでエラーを返し下の処理はしない
try{
トランザクション開始
SQL実行
コミット
}catch(Exception e) {
ロールバック
DBでエラーが発生した事を返す
}
省1
994: (ワッチョイ ff97-W3aP) 2022/09/20(火)16:20 ID:Sb2Kpzh+0(3/5) AAS
入力の例外値などは、
トランザクションで判別させるようなものじゃない。
ってことですか?
995: (ワッチョイ ff97-W3aP) 2022/09/20(火)16:27 ID:Sb2Kpzh+0(4/5) AAS
トランザクションの判別は、何か想定外の問題が起きた時であって、
想定されるような問題は事前になんとかしとけということかな。
996: (ワッチョイ 9f63-E+l9) 2022/09/20(火)16:33 ID:Sk0Tcp2N0(3/3) AAS
トランザクションで判定しないと行けないのは、
リソースの取り合いがあるときやDB自身の障害など
DB側でしか分からないようなケースだな
997: (ワッチョイ ff97-W3aP) 2022/09/20(火)16:36 ID:Sb2Kpzh+0(5/5) AAS
ありがとうございます。
ということは、トランザクションは、
try-catch文で例外判断するのが一般的なのですね。
998
(1): (ワッチョイ 97da-E+l9) 2022/09/20(火)23:33 ID:k4MHQr8J0(1) AAS
クラスのファイル名の拡張子に .inc を使うのは
今の時代では許されてないの?
許されるなら .inc を使い続けたい
999
(1): (ワッチョイ 9fb7-ldZd) 2022/09/21(水)00:13 ID:9N/hP2WI0(1) AAS
次スレ立ってた
【PHP】下らねぇ質問はここに書き込みやがれ 14
2chスレ:tech

>>998
まずはPSR-0や4を調べてもらって、その上でincにしたいと言うなら
個人の趣味開発くらいなら自由にしたら良いと思う
1000: (ワッチョイ 97da-E+l9) 2022/09/21(水)13:48 ID:kTmMqKR00(1) AAS
>>999
PSR-0を読んで、そういや .incはダメって書いてねーな・・・ と思ったので聞いてみました!

1000なら許される
1001
(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 377日 4時間 10分 1秒
1002
(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
省4
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.266s*