teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

加筆修正

2021/01/15 09:26

投稿

退会済みユーザー
answer CHANGED
@@ -34,4 +34,5 @@
34
34
  __rollback()
35
35
  catch
36
36
 
37
- みたいな構造。
37
+ みたいな構造。このへんの流れは、ベテランでも何度も読み返すこちらの記事を参照あれ。
38
+ [PHPでデータベースに接続するときのまとめ - Qiita](https://qiita.com/mpyw/items/b00b72c5c95aac573b71)

2

加筆修正

2021/01/15 09:25

投稿

退会済みユーザー
answer CHANGED
@@ -8,4 +8,30 @@
8
8
  ```
9
9
  も無視されてしまうので、デバッグをちゃんとやるなら、
10
10
  php.iniファイル上の該当箇所をデバッグ用に修正してください。
11
- php.iniファイル上での記述の仕方は、こちらを参照:[PHPのエラー表示設定について - Qiita](https://qiita.com/shotets/items/3c95aef631b2c5eadae5)
11
+ php.iniファイル上での記述の仕方は、こちらを参照:[PHPのエラー表示設定について - Qiita](https://qiita.com/shotets/items/3c95aef631b2c5eadae5)
12
+
13
+ 細かいことを言うと、
14
+ `new PDO()`する下りだけtry~catchしているんだが、
15
+ データベースにアクセスしている最中は例外は発生しやすいので、
16
+ 全体的にtryブロック内に入れるべし。
17
+
18
+ さらには、複数のINSERT INTO文を実行しているけど、
19
+ 片方だけ成功して片方が失敗したりするとデータの不整合を起こしちゃう危険性があるんじゃないかい?
20
+ 失敗したときにINSERT INTO文をなかったコトにするためには、
21
+ [PHP: PDO::beginTransaction - Manual](https://www.php.net/manual/ja/pdo.begintransaction.php)
22
+ [PHP: PDO::commit - Manual](https://www.php.net/manual/ja/pdo.commit.php)
23
+ [PHP: PDO::rollBack - Manual](https://www.php.net/manual/ja/pdo.rollback.php)
24
+ を駆使します。
25
+
26
+ try
27
+ _new PDO()
28
+ _try
29
+ __beginTransaction()
30
+ __INSERT INTO文実行1
31
+ __INSERT INTO文実行2
32
+ __commit()
33
+ _catch
34
+ __rollback()
35
+ catch
36
+
37
+ みたいな構造。

1

加筆修正

2021/01/15 09:24

投稿

退会済みユーザー
answer CHANGED
@@ -1,2 +1,11 @@
1
1
  さすがに`$db = new PDO('*******);`の閉じ引用符忘れはギャグだと思うのだけど、
2
- `if ($a > 0) {`に対する`} else {`の閉じる方がないのは文法エラーになっちゃうんじゃないかい?
2
+ `if ($a > 0) {`に対する`} else {`の閉じる方がないのは文法エラーになっちゃうんじゃないかい?
3
+
4
+ つまらない文法エラーが有ると、冒頭の
5
+ ```
6
+ ini_set("display_errors", 1);
7
+ error_reporting(E_ALL);
8
+ ```
9
+ も無視されてしまうので、デバッグをちゃんとやるなら、
10
+ php.iniファイル上の該当箇所をデバッグ用に修正してください。
11
+ php.iniファイル上での記述の仕方は、こちらを参照:[PHPのエラー表示設定について - Qiita](https://qiita.com/shotets/items/3c95aef631b2c5eadae5)