phpでデータベースに接続して値を入れる。
「気づけばプロ並みをp●p」を参考に、ECサイトを作成していました。
フレームワークの勉強もしたかったのですが、スクラッチ開発をすることで、一つ一つの流れを構築していき、ロジックを理解することができると思ったからです。
フレームワークに頼り切ってしまうと、応用が効かなくなるという話を聞いたので、スクラッチ開発をもう一度復習も兼ねて学習しようとしていました。
ところが、
p111の商品を追加する画面を追加し、確認画面pro_add_done.phpで、データベース接続して、
INSERT文でデータを入れようとしましたが、値が入りません。
「気づけばプロ並みをp●p」のソースコードをまるまるコピペしてみましたが、それでもデータが入りません。
その時のコードがこれです。
<?php
try {
$pro_name = $_POST['name'];
$pro_price = $_POST['price'];
$user = 'root';
$password = '';
$dbh = new PDO($dsn, $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$data = $pro_name;
$data = $pro_price;
$stmt->execute($data);
$dbh = null;
print $pro_name;
print 'を追加しました。<br />';
} catch (Exception $e) {
print 'ただいま障害により大変ご迷惑をお掛けしております。';
exit();
}
?>
</body>
ここで、「.$e->getMessage()」をcatch(Exception $e)の
print 'ただいま障害により大変ご迷惑をお掛けしております。'.$e->getMessage();
.$e->getMessage()を挿入してみました。
すると
こんなエラー文が
SQLSTATE[HY000]: General error: 1364 Field 'gazou' doesn't have a default value
gazouの値が入っていないというエラーだと思われます。
値が入っていなくても、dbにデータを挿入することができるようにするために、調べてみると、
アプリケーション→XAMPP→etc→my.cnf
のファイルの中の
[mysqld] のしたに
sql_mode=NO_ENGINE_SUBSTITUTION
を挿入して、サーバーを再起動すると、
データがすべて入っていなくても、値を挿入することができました。