回答編集履歴
4
見直し
test
CHANGED
@@ -60,11 +60,15 @@
|
|
60
60
|
|
61
61
|
ふつうに見えるように文字列を加工してしまうものです。
|
62
62
|
|
63
|
+
例えば「&」を出力できるように「&」と
|
64
|
+
|
63
|
-
|
65
|
+
「"」を出力できるように「"」と書き換えてしまいます。
|
64
66
|
|
65
67
|
もしも$staff_name文字列に&を許容したとして、
|
66
68
|
|
67
|
-
データベースに&を含む人だぁれってクエリー組むときに
|
69
|
+
データベースに&を含む人だぁれってクエリー組むときに
|
70
|
+
|
71
|
+
&にも"にも反応すると面倒になります。
|
68
72
|
|
69
73
|
データベースには加工前の正しいデータを保存することを守りましょう。
|
70
74
|
|
3
加筆修正
test
CHANGED
@@ -73,3 +73,21 @@
|
|
73
73
|
変数で加工後の文字列を保持しないほうが良いです。
|
74
74
|
|
75
75
|
参考:[PHP で h() を書くなら一緒に echo しよう。 - こせきの技術日記](http://koseki.hatenablog.com/entry/20120216/htmlspecialhonyarara)
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
老婆心でもう一つ。
|
80
|
+
|
81
|
+
データベースアクセスの一連の流れは、
|
82
|
+
|
83
|
+
[PHPでデータベースに接続するときのまとめ - Qiita](https://qiita.com/mpyw/items/b00b72c5c95aac573b71)
|
84
|
+
|
85
|
+
ここにエッセンスが詰め込まれているので真似すると良いよ。
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
・スマホ相手に絵文字を扱うかもしれないときは、utf8mb4を使う。
|
90
|
+
|
91
|
+
・new PDO()するときに、もうdriver_optionsを与えてエラー発生時に例外を発生させるようにしつつ、一連のDB処理をtry~catchで括る。
|
92
|
+
|
93
|
+
・PDO::prepare → PDOStatement::bindValue → PDOStatement::execute の3ステップでクエリを実行する。bindValue()使えば、データ型の指定ができるし。
|
2
見直し
test
CHANGED
@@ -13,6 +13,10 @@
|
|
13
13
|
`$sql = "INSERT INTO mst_staff (name, password) VALUES ( :$staff_name, :$staff_pass)";`
|
14
14
|
|
15
15
|
全角空白入れてると動かないよ。
|
16
|
+
|
17
|
+
`$sql = "INSERT INTO mst_staff (name, password) VALUES ( :staff_name, :staff_pass)";`
|
18
|
+
|
19
|
+
プレースホルダに`$`はつけない。
|
16
20
|
|
17
21
|
|
18
22
|
|
1
見直し
test
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
26行目付近に、未定義の変数 data を参照しているよ、というエラーメッセージです。
|
2
|
+
|
3
|
+
`$stmt->execute($data); `
|
4
|
+
|
5
|
+
これですね。
|
6
|
+
|
7
|
+
せめて、`$stmt->execute([$staff_name, $staff_pass]); `とします。
|
2
8
|
|
3
9
|
「Notice: Undefined variable」の箇所だけでもネット検索すれば解説ページが見つかるはずですが。
|
4
10
|
|