@hokuex0129

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

phpでSQLをexecuteしたい

解決したいこと

市販書籍教材に沿ってphpでwebアプリ(ショッピングサイト)をつくっています。
SQLをexecute()したいのですが、動いてくれません。

executeの引数をvar_dumpしたら、正常にarrayが表示されますので、
execute以前の処理に問題はないと思うのですが、他の原因の検討がつかず困っています。

諸先輩方、解決方法を教えて下さい。

発生している問題・エラー

catchの処理が表示されます。

該当するソースコード

    <?php
    try {
        $pro_name = $_POST['name'];
        $pro_price = $_POST['price'];

        $pro_name = htmlspecialchars($pro_name, ENT_QUOTES, 'UTF-8');
        $pro_price = htmlspecialchars($pro_price, ENT_QUOTES, 'UTF-8');

        $dsn = 'mysql:dbname=shop;host=localhost;charset=utf8';
        $user = 'root';
        $password = 'root';
        $dbh = new PDO($dsn,$user,$password);
        $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

        $sql = 'INSERT INTO mst_product(name,price) VALUES (?,?)';
        $stmt = $dbh->prepare($sql);
        $data[] = $pro_name;
        $data[] = $pro_price;
        var_dump ($data);
        $stmt->execute($data);

        $dbh = null;

        print $pro_name;
        print 'を追加しました。<br/>';
    }catch (Exception $e) {
        print 'ただいま障害により大変ご迷惑をお掛けしております。';
        exit();
    }
    ?>
0 likes

1Answer

Comments

  1. @hokuex0129

    Questioner

    ご回答ありがとうございます。

    echo $e->getMessage();
    SQLSTATE[HY000]: General error: 1364 Field 'image' doesn't have a default value

    dbにimageカラムがあるのですが、デフォ値がないとのエラーでしたので、
    imageカラムのデフォ値を「なし」→「NULL」としたら成功しました!

    ありがとうございます!

Your answer might help someone💌