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