前提・実現したいこと
現在PHPの勉強中で簡単な家計簿を作成しています。
DBへのINSERT文がうまくいっていないようです。
日付を取得してはいるが、それが入らないためにうまくいっていないのかと・・・
発生している問題・エラーメッセージ
PHPのファイルからDBへINSERTしても追加されません。
DBとの接続ができているかSELECT文を実行したところ、(40〜46行目)
予めテストとして入れておいた内容は取得できました。
エラーメッセージ等は発生しておらず、
処理が完了した際は処理完了後のメッセージが表示されます。
該当のソースコード
PHP
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>家計簿登録</title> 6</head> 7<body> 8 9<p>家計簿</p> 10 11<h2>支出の登録</h2> 12<form action="" method="post" enctype="multipart/form-data"> 13 <select name="category"> 14 <?php 15 $category = [ 16 "食費", 17 "雑費", 18 "生活費", 19 "あそび" 20 ]; 21 foreach($category as $item){ 22 echo '<option value ="'.$item.'">'.$item.'</option>'; 23 } 24 ?> 25 </select> 26<input type="text" name="name"><br> 27<input type="text" name="price">円<br> 28<input type="submit" value="登録する" name="send"> 29 30</form> 31 32</body> 33</html> 34 35<!-- DBに追加 --> 36<?php 37$pdo = new PDO('mysql:host=localhost; dbname=moneynote; charset=utf8', 'root', ''); 38 39 40// foreach($pdo->query('SELECT * FROM `record` WHERE `no` = 3') as $row){ 41// echo $row['no']; 42// echo $row['day']; 43// echo $row['category']; 44// echo $row['name']; 45// echo $row['price']; 46// } 47 48 49if(isset($_POST['send'])){ 50 $day = date("Y-m-d"); 51 $category = $_POST['category']; 52 $name = $_POST['name']; 53 $price = $_POST['price']; 54 $sql = 'INSERT INTO `record`(`no`, `day`, `category`, `name`, `price`) VALUES (NULL, cast($day as data), $category, $name, $price);'; 55 $pdo->query($sql); 56 echo "追加しました"; 57} 58 59var_dump($day); 60 61 62 63?> 64<!-- DBに追加 ここまで -->
試したこと
SQL文の変数に値を直接入れて、phpmyadminから直接SQL文を実行すると内容は追加されました。
補足情報(FW/ツールのバージョンなど)
環境はmacでlammpを使用しています。
localhost:8080で表示しており、DBはphpmyadminを使用しています。
SQLの構造は以下の通りです。
テーブル:record
|名前|データ型|照合順序|NULL|デフォルト値|その他|
|:--|:--:|--:|
|no|int(4)||いいえ|なし|AUTO_INCREMENT|
|day|date||いいえ|なし||
|category|varchar(20)||いいえ|なし||
|name|varchar(20)||いいえ|なし||
|price|int(5)||いいえ|なし||