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

回答編集履歴

1

修正

2019/02/12 05:36

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -32,7 +32,7 @@
32
32
  $data = [$id];
33
33
  $stmt = $this->dbh->prepare($sql);
34
34
  $stmt->execute($data);
35
- return $stmt->fetch(PDO::FETCH_ASSOC);
35
+ return $stmt->fetch(PDO::FETCH_ASSOC);//PDO::FETCH_ASSOCしかしないのであれば毎回書くのではなくそれだけで1つ関数作ってreturn $stmt->fetch(PDO::FETCH_ASSOC);するだけの関数作るのもあり。
36
36
  }
37
37
 
38
38
 
@@ -41,7 +41,7 @@
41
41
  $sql = 'INSERT INTO `feeds`(`feed`,`user_id`,`created`) VALUES(?,?,NOW())';
42
42
  $data = [$feed,$signin_user['id']];
43
43
  $stmt = $this->dbh->prepare($sql);
44
- $stmt->execute($data);
44
+ $stmt->execute($data); //何も返さないのはNG。insertは確か成功したかどうかが返るはずなので何かしら返したほうがいいし「確実に成功する」前提での作りは良くないのでこちらもtry-catchで囲ってしっかりExceptionを捕捉すべき
45
45
  }
46
46
 
47
47
  // いいね件数
@@ -50,9 +50,15 @@
50
50
  $data = [$feed_id];
51
51
  $stmt = $this->dbh->prepare($sql);
52
52
  $stmt->execute($data);
53
- $result = $like_stmt->fetch(PDO::FETCH_ASSOC);
53
+ $result = $stmt->fetch(PDO::FETCH_ASSOC); //元のコード、変数名間違えてますよ。修正しました。
54
54
  return $result['like_cnt'];
55
55
  }
56
+ /*
57
+ SQL作る→$dataに?の分の変数作る→preareする→executeに$data渡して実行
58
+ まで同じならここも「executeするまでの処理」を共通化したものを作ったほうがスッキリすると思う。
59
+ 要は$sql作って、$dataを配列で渡せば良いので。
60
+ 同じ処理が2回3回以上でてくるようなら共通化を検討しましょう。
61
+ */
56
62
  }
57
63
 
58
64
  ```