teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2018/11/15 15:38

投稿

tanat
tanat

スコア18778

answer CHANGED
@@ -33,4 +33,67 @@
33
33
 
34
34
  何も準備していない私の環境だと
35
35
  `SQLSTATE[HY000]: General error: 1 no such table: product`
36
- のように、productテーブルが無い旨エラーが表示されます。
36
+ のように、productテーブルが無い旨エラーが表示されます。
37
+
38
+ ---
39
+
40
+ 追記
41
+
42
+ 恐らく、直すだけな以下の様な感じでしょうか。
43
+
44
+ ```
45
+ <?php
46
+
47
+ <?php
48
+
49
+ $dbname = "sqlite:pdb.db";
50
+ $usrname = "";
51
+ $psword = "";
52
+
53
+ $db = new PDO($dbname);
54
+
55
+ $db->exec("DROP TABLE IF EXISTS product");
56
+ $db->exec("CREATE TABLE product(id INTEGER PRIMARY KEY,name STRING,price INTEGER)");
57
+
58
+ $qry=array(
59
+ "INSERT INTO product (name, price) VALUES('鉛筆', 80)",
60
+ "INSERT INTO product (name, price) VALUES('消しゴム', 50)",
61
+ "INSERT INTO product (name, price) VALUES('定規', 200)",
62
+ "INSERT INTO product (name, price) VALUES('コンパス', 300)",
63
+ "INSERT INTO product (name, price) VALUES('ボールペン', 100)"
64
+ );
65
+ foreach($qry as $value){
66
+ $db->exec($value);
67
+ }$qry="SELECT * FROM product";
68
+ $data= $db->query($qry);
69
+
70
+ $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
71
+
72
+ try{
73
+
74
+ $word = null;
75
+
76
+ if(isset($_POST["word"]))
77
+ $word = $_POST["word"];
78
+
79
+ $qry = "SELECT * FROM product WHERE name LIKE :word";
80
+ $word = "%" . $word . "%";
81
+ $stmt = $db->prepare($qry);
82
+ var_dump($stmt);
83
+ $stmt->bindParam(":word", $word);
84
+ $stmt->execute();
85
+
86
+ while($value = $stmt->fetch()){
87
+ $id = $value["id"];
88
+ $name = $value["name"];
89
+ $price = $value["price"];
90
+ print "<tr><td>{$id}</td><td>{$name}</td><td>{$price}</td></tr>\n";
91
+ }
92
+
93
+
94
+ }catch(Exception $e){
95
+ echo $e->getMessage();
96
+
97
+ }
98
+
99
+ ```

1

追記

2018/11/15 15:38

投稿

tanat
tanat

スコア18778

answer CHANGED
@@ -29,5 +29,8 @@
29
29
 
30
30
  こんな感じで例外を補足するようにするとエラーを表示出来るので、表示されたエラーを質問に追記してください。
31
31
  多分、これより前の問題で用意している(であろう)DBのテーブルが無いとかそういう準備不足な気がします。
32
+ (その場合、書籍を持っていない人には回答出来ないので少し前の設問から順に試しなおしてみるなどが良いかなと思います。)
32
33
 
34
+ 何も準備していない私の環境だと
33
- その場合、書籍を持っていない人には回答出来ないので少し前の設問から順に試しなおしてみるなどが良いかなと思います。
35
+ `SQLSTATE[HY000]: General error: 1 no such table: product`
36
+ のように、productテーブルが無い旨エラーが表示されます。