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

質問編集履歴

2

コードを見やすくしました。

2020/09/20 06:44

投稿

Akki-ra
Akki-ra

スコア5

title CHANGED
File without changes
body CHANGED
@@ -1,20 +1,18 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
3
  PHPでブログを作っています。
4
-
5
- https://youtu.be/nUcNSZfiiWM
4
+ [【PHP/MySQL入門】](https://youtu.be/nUcNSZfiiWM)
6
5
  こちらの動画をみて進めていったらindex.phpのところでエラーが出ました。
7
6
 
8
7
  ```
9
8
  エラーメッセージ
10
- ```Fatal error: Uncaught PDOException: 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 '' at line 1 in C:\MAMP\htdocs\dbc.php:35 Stack trace: #0 C:\MAMP\htdocs\dbc.php(35): PDO->query('SELECT * FROM ') #1 C:\MAMP\htdocs\index.php(5): Dbc->getAll() #2 {main} thrown in C:\MAMP\htdocs\dbc.php on line 35
9
+ Fatal error: Uncaught PDOException: 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 '' at line 1 in C:\MAMP\htdocs\dbc.php:35 Stack trace: #0 C:\MAMP\htdocs\dbc.php(35): PDO->query('SELECT * FROM ') #1 C:\MAMP\htdocs\index.php(5): Dbc->getAll() #2 {main} thrown in C:\MAMP\htdocs\dbc.php on line 35
10
+ ```
11
+ **該当のコード**
12
+ dbc.php
13
+ ```ここに言語を入力
14
+ <?php
11
15
 
12
- ### 該当のソースコード
13
-
14
- ```ここに言語名を入力
15
- ソースコード
16
- ```**dbc.php**<?php
17
-
18
16
  Class Dbc
19
17
  {
20
18
  protected $table_name;
@@ -54,10 +52,37 @@
54
52
  $dbh = null;
55
53
  }
56
54
 
57
-
55
+ // idから一つのデータを取ってくる
56
+ // 引数:$id
57
+ // 返り値:$result
58
+ public function getById($id) {
59
+ if(empty($id)) {
60
+ exit('IDが不正です。');
61
+ }
62
+
63
+ $dbh = $this->dbConnect();
64
+
65
+ // SQL準備
66
+ $stmt = $dbh->prepare("SELECT * FROM $this->table_name Where id = :id");
67
+ $stmt->bindValue(':id', (int)$id, PDO::PARAM_INT);
68
+ // SQL実行
69
+ $stmt->execute();
70
+ // 結果を取得
71
+ $result = $stmt->fetch(PDO::FETCH_ASSOC);
72
+
73
+ if(!$result) {
74
+ exit('ブログがありません。');
75
+ }
76
+
77
+ return $result;
78
+ }
79
+
58
80
  }
59
81
  ?>
82
+
83
+ ```
60
- **blog.php**
84
+ blog.php
85
+ ```ここに言語を入力
61
86
  <?php
62
87
  require_once('dbc.php');
63
88
 
@@ -104,7 +129,9 @@
104
129
  }
105
130
 
106
131
  ?>
132
+ ```
107
- **index,php**
133
+ index.php
134
+ ```ここに言語を入力
108
135
  <?php
109
136
  require_once('blog.php');
110
137
  ini_set('display_errors', "On");
@@ -140,7 +167,7 @@
140
167
  </table>
141
168
  </body>
142
169
  </html>
143
-
170
+ ```
144
171
  ### 試したこと
145
172
 
146
173
  dbc.phpファイルでtable_nameにblogと入れてやるとエラーが出ません。

1

index.php追加

2020/09/20 06:44

投稿

Akki-ra
Akki-ra

スコア5

title CHANGED
File without changes
body CHANGED
@@ -104,8 +104,43 @@
104
104
  }
105
105
 
106
106
  ?>
107
+ **index,php**
108
+ <?php
109
+ require_once('blog.php');
110
+ ini_set('display_errors', "On");
111
+ $blog = new Blog();
112
+ $blogData = $blog->getAll();
107
113
 
114
+ ?>
108
115
 
116
+ <!DOCTYPE html>
117
+ <html lang="en">
118
+ <head>
119
+ <meta charset="UTF-8">
120
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
121
+ <title>ブログ一覧</title>
122
+ </head>
123
+ <body>
124
+ <h2>ブログ一覧</h2>
125
+ <p><a href="/form.html">新規作成</a></p>
126
+ <table>
127
+ <tr>
128
+ <th>No</th>
129
+ <th>タイトル</th>
130
+ <th>カテゴリ</th>
131
+ </tr>
132
+ <?php foreach($blogData as $column): ?>
133
+ <tr>
134
+ <td><?php echo $column['id']?></td>
135
+ <td><?php echo $column['title']?></td>
136
+ <td><?php echo $blog->setCategoryName($column['category']) ?></td>
137
+ <td><a href="/detail.php?id=<?php echo $column['id'] ?>">詳細</a></td>
138
+ </tr>
139
+ <?php endforeach; ?>
140
+ </table>
141
+ </body>
142
+ </html>
143
+
109
144
  ### 試したこと
110
145
 
111
146
  dbc.phpファイルでtable_nameにblogと入れてやるとエラーが出ません。