前提・実現したいこと
簡単な掲示板を作ってみたのですが、dbから書き込まれたデータ一覧を表示させたいです。
入力されたデータを実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Warning: SQLite3::query(): Unable to prepare statement: 1, no such table: qffc162de19c4c3731ca34287 in hoge/aaaaaaaaaaaaa39685.php on line 121 Fatal error: Uncaught Error: Call to a member function fetchArray() on boolean in /home/etdfftytg/etdfftytg.php.xdomain.jp/public_html/aaaaaaaaaaaaa39685.php:122 Stack trace: #0 {main} thrown in hoge/aaaaaaaaaaaaa39685.php on line 122
該当のソースコード
php
1<?php 2// タイムゾーン設定 3date_default_timezone_set('Asia/Tokyo'); 4 5$db = null; 6$sql = null; 7$name=null; 8$now=null; 9$tablename=null; 10$main=null; 11$res = null; 12$row = null; 13 14echo ページ番号はtablEnameです; 15echo ページのお題; 16 echo '<hr>'; 17if(isset($_POST['btn_confirm']) and isset($_POST['main'])){ 18 19$name=htmlspecialchars($_POST['name'],ENT_QUOTES); 20 21$main=htmlspecialchars($_POST['main'],ENT_QUOTES); 22// 書き込み日時を取得 23$now = date("Y/m/d H:i:s"); 24$db = new SQLite3("wish.db"); 25 26 $sql="CREATE TABLE IF NOT EXISTS tablEname( 27 id INTEGER NOT NULL, 28 view_name TEXT NOT NULL, 29 message TEXT NOT NULL, 30 post_date INTEGER NOT NULL, 31 PRIMARY KEY(id) 32)"; 33$db->exec($sql); 34 35$sql = "INSERT INTO tablEname(view_name,message,post_date) VALUES(:name,:main,:now)"; 36 37$res=$db->prepare($sql); 38 39$res->bindValue(':name',$name,SQLITE3_TEXT); 40 41$res->bindValue(':main',$main,SQLITE3_TEXT); 42 43$res->bindValue(':now',$now,SQLITE3_TEXT); 44 45$res->execute(); 46 47} 48 49?> 50<!DOCTYPE html> 51<html> 52<head> 53<meta charset="utf-8"> 54<title>たいとる</title> 55 56</head> 57<body> 58<h1>ひと言掲示板</h1> 59<h1>内容</h1> 60 61<h2>入力欄</h2> 62 <div class="form-wrapper"><form action="" method="post"> 63 64 <div class="form-item"> 65 66 <label for="name"></label> 67 68 <input type="text" name="name" placeholder="表示名"></input> 69 70 </div> 71 <label for="main"></label> 72 73 <input type="text" name="main" required="required" placeholder="コメントする(必須)"></input> 74 75 </div> 76 <div class="button-panel"> <input type="submit" class="button" name="btn_confirm" value="とうこう"></input> </div> 77 </form> 78 <?php 79 $db = new SQLite3("wish.db"); 80 $sql="SELECT * FROM tablEname"; 81 $res = $db->query($sql); 82 while( $row = $res->fetchArray() ) { 83 echo '<ul> ' . ' <li> '.$row[0].'</li>'. ' <li> '.$row[1].'</li>'. 84 ' <li> '.$row[2].'</li>'. ' <li> '.$row[3].'</li>'. ' <li> '.$row[4].'</li>'. 85 '</ul>';} 86 ?> 87 88</body> 89</html>
試したこと
なぜかif文の中でselectをしているとテーブルは作られるし、うまくいきます。(if文中なので投稿をしないとデータ全て表示されませんが)
初歩的なミスだと思いますがよろしくお願いします。
失礼しました。
tablEnameは
str_replaceで、英数字の文字列(入力内容によって変わる)です。
例:tablEname=mb5(入力内容)
str_replace("入力内容"."入力データ".tablEname)
変更は別ページの入力内容なので、tablEnameは何かしら英数字になっています。
実際にそれは成功しています。
例:echo ページ番号はtablEnameです;➡️echo ページ番号はyddryhn65433ghjです;
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。