現在PHP/MYSQLの勉強をしている者です。
今回、記事・URL・更新日時といった情報をmysqlを使ってデータベースに保存して
phpを使って表示するというサイトを作りながら勉強をしています。
【実行してみた事】
記事タイトル・記事URL・更新日時・コメント数を取得して
PHPでMYSQLを使ってデータベースに登録。
PHPにてMYSQLに入っているデータを取り出して表示。
ここまではネットで調べたり、書籍で調べたりでなんとか実現する事が出来ました。
そこで1歩前に進んで
データを登録する際に、
既に登録している記事タイトルやURLだった場合に
「重複してデータベースに登録を防ぐ為」に
「コメント数」・「更新時間(何分前・何時間前・何か月前などの)」だけを最新の情報に更新するという風に
設定してみました。
PHP
1//ON DUPLICATE KEY UPDATEに jikan = $jikan, を設定するとエラーが表示されます。 2//jikan = $jikan,以外の「comment = $comment,」と 3//「created = now()」だけではエラーが表示されず成功します。 4 5//$jikanには「2分前」「1時間前」といった文字列が入っています。 6//$commentには「10」「100」といった数値が入っています。 7 8$sql = "insert into bbs (title, url, body, name, comment, jikan, 9created) values (:title,:url,:body,:name,:comment,:jikan,now()) 10ON DUPLICATE KEY UPDATE 11comment = $comment, 12jikan = $jikan, 13created = now() 14"; 15$stmt = $db->prepare($sql); 16$stmt->execute([ 17 ':title' => $title, 18 ':url' => $url, 19 ':body' => $body, 20 ':name' => $name, 21 ':comment' => $comment, 22 ':jikan ' => $jikan 23]); 24 25
ON DUPLICATE KEY UPDATE
にて
jikan = $jikan,を設定した時に下記のエラーコードが表示されました。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column '2分前' in 'field list'' in
日本語訳:
SQLSTATE [42S22]:列が見つかりません:1054'フィールドリスト 'の' 2分前 'の不明な列' '
テーブルにあるカラムには
title, url, body, name, comment, jikan,created があります。
プライマリーキー:id
ユニークキー:title
ユニークキー:url
に設定しています。
エラーが表示されない変数には「日本語」が入っていなく「数値」や「日付」
エラーが表示される変数「$jikan」には「2分前」「5分前」といった日本語が入っているので
それが原因なのかも?と考え
色々と試してみたのですが上手くいかず、頭が混乱してしまっている状態です。
ネットで色々調べてみたのですが、解決する事が出来ませんでした。
解決方法をご存知の方や、何かお気付きの点がある方は
お力をお貸し頂けると嬉しいです。
どうかお願いします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/25 03:11