質問: $db->exec('INSERT INTO my_items SET maker_id=1, item_name="もも", price=210, keyword="缶詰,ピンク,甘い", sales=0'); echo $count . '件のデータを挿入しました。'; ?> ``` 出力結果は 件のデータを挿入しました。 で,countの値が表示されません。本来なら入力したSQL文の数ぶん(今回は1)が返ると思うのですが,何も表示されないのです。 いろいろ調べてはみたのですが,PHPのverが7以上であればphp.iniをいじらなくてもPDOは使えますし,コードの間違いも特に見当たらなくどうしたものかと悩んでおります。 ご助言いただけると幸いです。 【追記】 下記のようにコードを修正しても現状は変わらずです。 ``` prepare('INSERT INTO my_items SET maker_id=1, item_name="モモ", price=210, keyword="缶詰,ピンク,甘い", sales=0'); $count -> execute(); }catch(PDOException $e){ echo "DB接続エラー:". $e->getMessage(); } ?> ``` ・host=localhostにしても何も変わらず。 ・phpを実行している手順は上記のコードを C:\xampp/\htdocs/memo下におき,検索エンジン(chrome)で http://localhost/memo/index.phpと入力しています。 ・php 7.2.11,phpMyAdmin 4.8.3,Apache 2.4.35をWindows10 64bitで使用しています。 ・エディタはVSコードを使用しています。 ・DBに入力したcreate分は ``` INSERT INTO my_items SET maker_id=1, item_name="リンゴ", price=210, keyword="缶詰,ピンク,甘い", sales=0 ``` です。これはDB上で実行するとDB上にデータが追加されます。 以上でございます。何卒よろしくお願いします。
回答: ☓ `false` チェックをするのが普通 ○ `false` チェックをしなくてもいいようにエラーモードを変更するのが普通 PHPでデータベースに接続するときのまとめ - Qiita ツッコミどころ多すぎるので修正後のコードだけ書いておきます。 ``` PDO::ERRMODE_EXCEPTION, ] ); $stmt = $pdo->prepare('INSERT INTO my_items(maker_id, item_name, price, keyword, sales) VALUES (?, ?, ?, ?, ?)'); $stmt->execute([1, 'リンゴ', 210, '缶詰,ピンク,甘い', 0]); $count = $stmt->rowCount(); var_dump($count); } catch (PDOException $e) { echo $e->getMessage(); } ```