回答編集履歴
2
加筆
test
CHANGED
@@ -13,3 +13,55 @@
|
|
13
13
|
コントロールパネルからデータベースの情報を調べて、
|
14
14
|
|
15
15
|
接続用文字列のlocalhostなどの設定を見直ししてください。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
---
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
```php
|
24
|
+
|
25
|
+
$db->query("INSERT INTO tb (ban,nam,mes,dat)
|
26
|
+
|
27
|
+
VALUES (NULL,'$my_nam','$my_mes',NOW())");
|
28
|
+
|
29
|
+
```
|
30
|
+
|
31
|
+
↓
|
32
|
+
|
33
|
+
```php
|
34
|
+
|
35
|
+
$stmt = $db->prepare("INSERT INTO tb (ban, nam, mes, dat)
|
36
|
+
|
37
|
+
VALUES (NULL, :my_nam, :my_mes, NOW())");
|
38
|
+
|
39
|
+
$stmt->bindValue(':my_nam', $my_nam, PDO::PARAM_STR);
|
40
|
+
|
41
|
+
$stmt->bindValue(':my_mes', $my_mes, PDO::PARAM_STR);
|
42
|
+
|
43
|
+
$stmt->execute();
|
44
|
+
|
45
|
+
```
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
とかですかね。
|
50
|
+
|
51
|
+
SQL文字列に、外部からくるデータを直接展開するのは止めましょう。
|
52
|
+
|
53
|
+
[PDO::prepare](https://www.php.net/manual/ja/pdo.prepare.php)
|
54
|
+
|
55
|
+
[PDOStatement::bindValue](https://www.php.net/manual/ja/pdostatement.bindvalue.php)
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
あと、他の方の指摘にもあるように、データベース処理などする際には、
|
60
|
+
|
61
|
+
htmlspecialchars()の加工はしません。
|
62
|
+
|
63
|
+
HTML表示直前に加工して、変数の中身を書き換えることはしないほうが無難です。
|
64
|
+
|
65
|
+
[PHP で h() を書くなら一緒に echo しよう。 - こせきの技術日記](http://koseki.hatenablog.com/entry/20120216/htmlspecialhonyarara)
|
66
|
+
|
67
|
+
いわゆるh関数を使いましょうよと。
|
1
見直し
test
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
データベース用に別のホストが与えられるはず。
|
4
4
|
|
5
|
+
当然、データベース名も。
|
6
|
+
|
7
|
+
ユーザーidはサーバーのアカウントと同じ。
|
8
|
+
|
9
|
+
パスワードはデータベース開設時に自分で入力するはず。
|
10
|
+
|
11
|
+
|
12
|
+
|
5
13
|
コントロールパネルからデータベースの情報を調べて、
|
6
14
|
|
7
15
|
接続用文字列のlocalhostなどの設定を見直ししてください。
|