現在、プログラムの勉強をしている者です。
勉強目的でサイトの作成をして
簡単なアクセス解析を自作で作ってサイトに搭載したいと考えているのですが
「更新(update)」で問題が発生して困っています。
アクセス解析
①IN数、OUT数のクリックを取得してmysqlのデータベースに保存→出来ました。
②OUT数のクリック数をサイト毎に集計する→出来ました。
③クリック数の集計した結果を「UPDATE」でデータベースに書き込む→ここで問題が発生して出来ませんでした。
テーブル名:site カラム名: id,int sitename,varchar siteurl,varchar siterss,varchar sitedomain,varchar in,int(20),デフォルト値:0 out,int(20),デフォルト値:0 henkanritu,int(20),デフォルト値:0 lastdate,datetime sitename = 登録ブログ名 siteurl = 登録ブログのURL siterss = 登録ブログのRSS sitedomain = 登録ブログのクリック数をカウントする為の部分一致のURLのワード in = IN数の集計結果をUPDATEする為のものです。 out = OUT数の集計結果をUPDATEする為のものです。 henkanritu = 登録ブログに返還できているクリック数の値をUPDATEする為のものです。(IN数とOUT数を計算) lastdate = 登録ブログの最新記事の日時
PHP
1$outcount = "9999"; 2$sitedomain = "nifuramu64.jp"; 3$stmt = $db->prepare("update site set out = :out where sitedomain = :domain"); 4$stmt->execute([ 5 ':out' => $outcount, 6 ':domain' => $sitedomain 7]);
表示されたエラー
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'out = '111' where sitedomain = 'nifuramu64.jp'' at line 1
日本語翻訳
致命的なエラー: 'SQLSTATE [42000]:構文エラーまたはアクセス違反:1064というメッセージで、キャッチされない例外' PDOException 'SQL構文にエラーがあります。あなたのMySQLサーバーのバージョンに対応するマニュアルをチェックしてください。正しい構文については、 'out =' 9999 'の近くで使用してください。sitedomain =' nifuramu64.jp 'は' 1行目 'です。
UPDATEするカラムを「out」ではなく「henkan」に変更した所
エラーも発生せず、正常に更新されているのを確認出来ました。
$outcount = "9999"; $sitedomain = "nifuramu64.jp"; $stmt = $db->prepare("update site set henkan = :out where sitedomain = :domain"); $stmt->execute([ ':out' => $outcount, ':domain' => $sitedomain ]);
これだと「エラー」も出ずに、「henkan」カラムでの更新を確認出来ました。
また、「out」カラムだけでなく
「in」カラムに変更しても「エラー」が発生していました。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'in = '9999' where sitedomain = 'nifuramu64.jp'' at line 1'
「in」と「out」カラムでは「UPDATE」での「エラー」が発生して
「henkan」カラムではエラーが発生せずに
「UPDATE」が成功する理由を
ネットで調べたり、自分なりに考えても解決する事が出来ませんでした。
カラム
in:int(20),NULL:いいえ,デフォルト値:0
out:int(20),NULL:いいえ,デフォルト値:0
henkan:int(20),NULL:いいえ,デフォルト値:0
原因についてご存知の方や
何か気付いた事がありましたら
お力をお貸し頂ければとても嬉しいです。
どうかよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/05 14:21