前提・実現したいこと
ログイン後、該当ユーザーが登録している情報を画面に表示させるため、
mysqlを使用して、DBから値を取得しています。
ある項目(status)では取得した値をcase句で変換をかけて画面に表示します。
1→great!
2→good!
3→so-so
4→bad
その際以下のエラーメッセージが発生しました。
mysqlをはじめて1か月も満たないため、基本的なところでミスをしているかもしれませんが、
なぜこのエラーがでるのかがわからず知恵を拝借したいです。
発生している問題・エラーメッセージ
Parse error: syntax error, unexpected 'great' (T_STRING), expecting ',' or ')' in C:\MAMP\htdocs\trial2\check.php on line 31
該当ソース
<?php error_reporting(E_ALL);//E_STRICTレベル以外のエラーを報告する ini_set('display_errors','On');//画面にエラーを表示させるか session_start(); if(empty($_SESSION['login'])){ header("Location:login.php"); } else { $email = $_SESSION['email']; //db接続の準備 $dsn = 'mysql:dbname=php_trial2;hostlocalhost;charset=utf8'; $user = 'root'; $password = 'root'; $options = array( //sql実行時に例外をスロー PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //デフォルトゲットモードを連想配列形式に設定 PDO::ATTR_DEFAULT_FETCH_MODE =>PDO::FETCH_ASSOC, //バッファー度クエリを使う(一度に結果セットをすべて取得し、サーバー負荷を軽減) //SELECTでえた結果に対してもrowCountメソッドを使えるようにする PDO::MYSQL_ATTR_USE_BUFFERED_QUERY =>true, ); //pdoオブジェクト生成(dbへ接続) $dbh = new PDO($dsn,$user,$password,$options); $stmt = $dbh ->prepare('SELECT report_date,data, ** CASE status WHEN 1 then 'great!' WHEN 2 then 'good!' WHEN 3 then 'so-so' WHEN 4 then 'bad...' end as jokyo** FROM reports WHERE email = :email ORDER BY report_date DESC'); //プレースホルダーに値をセットし、SQL分を実行 $stmt ->execute(array(':email' => $email)); } ?>試したこと
・太字部分を削除した場合問題なく表示できること。
・'great!'前後にシングルコーテーションいれてみて同じエラーが出ること。
・
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー