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

回答編集履歴

2

加筆

2021/04/28 00:12

投稿

退会済みユーザー
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

見直し

2021/04/28 00:11

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,8 @@
1
1
  さくらのレンタルサーバーだと、
2
2
  データベース用に別のホストが与えられるはず。
3
+ 当然、データベース名も。
4
+ ユーザーidはサーバーのアカウントと同じ。
5
+ パスワードはデータベース開設時に自分で入力するはず。
6
+
3
7
  コントロールパネルからデータベースの情報を調べて、
4
8
  接続用文字列のlocalhostなどの設定を見直ししてください。