前提・実現したいこと
データベースへ値は保存できているのですが、その後のページ遷移の際に
エラーが発生してしまいます。
①Aファイルでコメント入力
②インラインフレームでBファイルが開く
③戻るボタンでAファイルに戻る。
この③のところでエラーが発生してしまいます。
sql文をechoしたところ、sql文中で変数として挿入している$auto_idが表示されていないようなのですが解決方法がわからずかなりはまってしまっています。。。
sql文が下記のようにa.auto_id=のところで$auto_idが表示されません。
SELECT * FROM m_comment_master AS a LEFT OUTER JOIN t_sales_db AS b ON a.auto_id=b.auto_id LEFT OUTER JOIN m_driver_master AS c ON a.commenter_id=c.driver_id WHERE a.auto_id= ORDER BY a.comment_id DESC
データはちゃんと保存されており、エラーが出たページから一つ戻って、もう一度ページに
入るとちゃんと入力したデータが反映されています。
どなたかご教示のほどお願いいたします。
発生している問題・エラーメッセージ
顧客データベース接続失敗。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 'ORDER BY a.comment_id DESC' at line 4
該当のソースコード
php
1//①Aファイルのコードです 2date_default_timezone_set('Asia/Tokyo'); 3$designated_date = date('n月d日 H時i分'); 4 5$auto_id = $_POST['auto_id']; 6$salesClient_id = $_POST['salesClient_id']; 7$driver_id = $_POST['driver_id']; 8$first_name = $_POST['first_name']; 9$last_name = $_POST['last_name']; 10$sales_date = $_POST['sales_date']; 11$shop_name = $_POST['shop_name']; 12$progress_purpose_name = $_POST['progress_purpose_name']; 13$progress_name = $_POST['progress_name']; 14$sales_history = $_POST['sales_history']; 15 16try { 17 $dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD, $options); 18 $dbh->query('SET NAMES utf8'); 19 20 // m_comment_masterからコメント情報の取り出し 21 $sql = "SELECT * FROM m_comment_master AS a 22 LEFT OUTER JOIN t_sales_db AS b ON a.auto_id=b.auto_id 23 LEFT OUTER JOIN m_driver_master AS c ON a.commenter_id=c.driver_id 24 WHERE a.auto_id= " . $auto_id . " ORDER BY a.comment_id DESC"; 25 26 echo $sql; 27 28 $stmt = $dbh->prepare($sql); 29 $stmt->execute(); 30 31 while($firstResult = $stmt->fetch(PDO::FETCH_ASSOC)) { 32 $commentData[] = $firstResult; 33 } 34 35 36 // t_sales_dbから情報の取り出し 37 $sql = "SELECT * FROM t_sales_db AS d 38 LEFT OUTER JOIN m_comment_master AS e ON d.driver_id=e.submitter_id 39 WHERE d.auto_id=" . $auto_id; 40 41 $stmt = $dbh->prepare($sql); 42 $stmt->execute(); 43 44 while($secondResult = $stmt->fetch(PDO::FETCH_ASSOC)) { 45 $salesData[] = $secondResult; 46 } 47 48 $dbh = null; 49 50} catch (PDOException $e) { 51 exit('顧客データベース接続失敗。'.$e->getMessage()); 52} 53 54//②BファイルのINSERT文です 55 56try { 57 58 $auto_id = $_POST['auto_id']; 59 $commenter_id = $_POST['driver_id']; 60 $submitter_id = $_POST['submitter_id']; 61 $comment_content = $_POST['comment_content']; 62 $driver_name = $_POST['driver_name']; 63 $comment_date = $_POST['comment_date']; 64 65 66 echo 'auto_id: '. $auto_id .'<br>'; 67 echo 'commenter_id: '. $commenter_id .'<br>'; 68 echo 'submitter_id: '. $submitter_id .'<br>'; 69 echo 'comment_content: '. $comment_content .'<br>'; 70 echo 'comment_date: '. $comment_date .'<br>'; 71 72 $sql = "INSERT INTO m_comment_master( 73 auto_id, 74 commenter_id, 75 submitter_id, 76 comment_content, 77 comment_date 78 ) VALUES (?,?,?,?,?)"; 79 80 $stmt = $dbh->prepare($sql); 81 82 $data[] = $auto_id; 83 $data[] = $commenter_id; 84 $data[] = $submitter_id; 85 $data[] = $comment_content; 86 $data[] = $comment_date; 87 88 // SQLで指令を出すための命令 89 if( !$stmt->execute($data) ) { 90 echo 'クエリの送信に失敗しました。 SQL:'.$sql; 91 throw new Exception(); 92 } 93 // 必ずデータベース切断 94 $dbh = null; 95 96} catch(Exeption $e) { 97 echo 'ただいま障害により大変ご迷惑をお掛けしております(_ _)'; 98 exit(); 99} 100
試したこと
上記の②から③に戻る際にlocation.hrefで戻るようにしているのですが、
ページキャッシュを無効化するために、ダミーのクエリパラメータを付けておくなどしたのですが、
表示されません。
補足情報(FW/ツールのバージョンなど)
・バージョン
PHP 7.1.23
mysql 5.6.43
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/30 07:08
2019/09/30 13:02
2019/10/01 02:10
2019/10/01 03:12