##実現したいこと
タイトルの通りです。
データの流れとしては以下です。
0. ユーザーからidとnameが送られてくる
- idがDBに登録されていれば、nameを更新
- idがDBに登録されていなければ、エラーメッセージを表示
ここで、送られてくるidとnameの値はそれぞれ一つずつとします。
id | name | age |
---|---|---|
1 | user1 | 25 |
2 | user2 | 30 |
3 | user3 | 55 |
例えば、「id = 2, name = 'user_two'」の値が送られてきた場合は、
上記テーブルのidが2のレコードのnameを更新し、
「id = 4, name = 'user_four'」の値が送られてきた場合は、
意図的にエラーを発生させ,下記コードのcatchに飛ばしたいです。
php
1try { 2 $db = new PDO(PDO_DSN, USERNAME, PASSWORD); 3 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 4 $stmt = $db->prepare('update users set age = ? where id = ?'); 5 $stmt->execute([$age, $id]); 6} catch (PDOException $e) { 7 echo $e->getMessage() . PHP_EOL; 8 exit; 9}
##試したこと
- Exist
UPDATE users SET age = 40 WHERE id = 4 EXISTS (SELECT * FROM users WHERE id = 4)
=>idが4のレコードがあれば更新する、みたいな処理を期待しましたが、エラーが出ます
- 上記の他にもcaseやifを使ったりしてみましたが上手くいきません
- 調べ方や学習方法にアドバイスがございましたらご指摘くださると幸いです
##利用環境
- PHP 7.1.29 (cli)
- mysql Ver 14.14 Distrib 5.6.44
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/21 05:14
2020/06/21 08:13