###前提・実現したいこと
PHPの入力フォームで入力した内容を
muSQLのデータベースに反映をさせたいのですが、
入力をした内容が反映されずに、Nullと表示されます
何が原因なのでしょうか?
###該当のソースコード
<!-- input.php --> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title> <link rel="stylesheet" href=""> </head> <body> <form action=input_do.php method="post"> <p>登録する情報を記入してください。</p> <form id="frmInput" name="frmInput" method="post" action="input_do.php"> <dl> <dt> <label for="maker_id">メーカーID</label> </dt> <dd> <input name="maker_id" type="text" id="maker_id" size="10" maxlength="10 /"> </dd> <dt> <label for="item_name">商品名</label> </dt> <dd> <input name="item_name" type="text" id="item_name" szie="35" maxlength="255" /> </dd> <dt> <label for="price">価格</label> </dt> <dd> <input name="price" type="text" id="price" szie="10" maxlength="10" /> 円</dd> <dt> <label for="keyword">キーワード</label> </dt> <dd> <input name="keyword" type="text" id="keyword" size="50" maxlength="255" /> </dd> </dl> <input type="submit" value="登録をする" /> </form> </body> </html>
修正前
<!-- input_do.php --> <?php try{ $pdo = new PDO('mysql:host=localhost;dbname=mydb;charset=utf8','root','suzusaga'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $stmt = $pdo->prepare('INSERT INTO my_items (maker_id, item_name, price, keyword) VALUES (:maker_id, :item_name, :price, :keyword)'); $maker_id = htmlspecialchars($_POST["$d%"]); $item_name = htmlspecialchars($_POST["%s%"]); $price = htmlspecialchars($_POST["%d%"]); $keyword = htmlspecialchars($_POST["%s"]); $stmt->bindValue('maker_id', $maker_id); $stmt->bindParam('item_name', $item_name); $stmt->bindValue('price', $price); $stmt->bindParam('keyword', $keyword); $stmt->execute(); } catch(PDOException $Exception) { die('接続エラー:'.$Exception->getMessage()); } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title> <link rel="stylesheet" href=""> </head> <body> <p>登録完了しました。</p> <p><a href="input.php">TOPに戻る</a></p> </body> </html>
修正後
<!-- input_do.php --> <?php try{ $pdo = new PDO('mysql:host=localhost;dbname=mydb;charset=utf8','root','suzusaga'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $sql = "SELECT * FROM my_items ORDER BY id DESC"; $stmt = $pdo->query($sql); print "接続に成功しました"."<br>"; $stmt = $pdo->prepare('INSERT INTO my_items (maker_id, item_name, price, keyword) VALUES (:maker_id, :item_name, :price, :keyword)'); $maker_id = htmlspecialchars($_POST["maker_id"]); $item_name = htmlspecialchars($_POST["item_name"]); $price = htmlspecialchars($_POST["price"]); $keyword = htmlspecialchars($_POST["keyword"]); $stmt->bindValue(':maker_id', $maker_id); $stmt->bindValue(':item_name', $item_name); $stmt->bindValue(':price', $price); $stmt->bindValue(':keyword', $keyword); $stmt->execute(); var_dump($maker_id); var_dump($item_name); var_dump($price); var_dump($keyword); } catch(PDOException $Exception) { die('接続エラー:'.$Exception->getMessage()); } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title> <link rel="stylesheet" href=""> </head> <body> <p>登録完了しました。</p> <p><a href="input.php">TOPに戻る</a></p> </body> </html>
###試したこと
###補足情報(言語/FW/ツール等のバージョンなど)
MAMPを使用しています
回答1件
あなたの回答
tips
プレビュー