回答編集履歴

2

追記

2015/11/02 15:07

投稿

退会済みユーザー
test CHANGED
@@ -213,3 +213,11 @@
213
213
  }
214
214
 
215
215
  ```
216
+
217
+
218
+
219
+ どこで改行するかなども、意図があってやっていることなので、なぜこういう書き方しているのだろうかなど考えて見てはいかがでしょうか?
220
+
221
+
222
+
223
+ 好みはありますので、この辺は人によって違いは大きい部分でしょうけど…

1

追記

2015/11/02 15:07

投稿

退会済みユーザー
test CHANGED
@@ -19,3 +19,197 @@
19
19
 
20
20
 
21
21
  指摘すべき部分が複数あるので、後ほど追記します。
22
+
23
+
24
+
25
+ ---
26
+
27
+
28
+
29
+ ```php
30
+
31
+ <?php
32
+
33
+
34
+
35
+ //開発時エラーメッセージを表示
36
+
37
+ ini_set('display_errors', 1);
38
+
39
+ error_reporting(E_ALL);
40
+
41
+
42
+
43
+ try {
44
+
45
+ $pdo = new PDO('mysql:host=localhost;dbname=form_test;charset=utf8', 'form_test', 'h5nf648x');
46
+
47
+
48
+
49
+ //プロペアドステートメントを利用してSQLインジェクションの脆弱性を潰す
50
+
51
+ $sql = "INSERT INTO `form`(";
52
+
53
+ $sql .= "`id`";
54
+
55
+ $sql .= ", `company_name`";
56
+
57
+ $sql .= ", `company_unit`";
58
+
59
+ $sql .= ", `name`";
60
+
61
+ $sql .= ", `name_furigana`";
62
+
63
+ $sql .= ", `mail_address`";
64
+
65
+ $sql .= ", `tel1`";
66
+
67
+ $sql .= ", `tel2`";
68
+
69
+ $sql .= ", `tel3`";
70
+
71
+ $sql .= ", `fax1`";
72
+
73
+ $sql .= ", `fax2`";
74
+
75
+ $sql .= ", `fax3`";
76
+
77
+ $sql .= ", `postal_code1`";
78
+
79
+ $sql .= ", `postal_code2`";
80
+
81
+ $sql .= ", `zip`";
82
+
83
+ $sql .= ", `address`";
84
+
85
+ $sql .= ", `contact_us`";
86
+
87
+ $sql .= ") VALUES (";
88
+
89
+ $sql .= "NULL";
90
+
91
+ $sql .= ", :company_name";
92
+
93
+ $sql .= ", :company_unit";
94
+
95
+ $sql .= ", :name";
96
+
97
+ $sql .= ", :name_furigana";
98
+
99
+ $sql .= ", :mail_address";
100
+
101
+ $sql .= ", :tel1";
102
+
103
+ $sql .= ", :tel2";
104
+
105
+ $sql .= ", :tel3";
106
+
107
+ $sql .= ", :fax1";
108
+
109
+ $sql .= ", :fax2";
110
+
111
+ $sql .= ", :fax3";
112
+
113
+ $sql .= ", :postal_code1";
114
+
115
+ $sql .= ", :postal_code2";
116
+
117
+ $sql .= ", :zip";
118
+
119
+ $sql .= ", :address";
120
+
121
+ $sql .= ", :contact_us";
122
+
123
+ $sql .= ")";
124
+
125
+ $stmt = $pdo->prepare($sql);
126
+
127
+
128
+
129
+ // ここから以下は、適切なバリデーション処理が事前にされていることが前提
130
+
131
+ //
132
+
133
+ // 質問にあるような
134
+
135
+ // $_SESSION[company_name]
136
+
137
+ // という書き方はNG
138
+
139
+ //
140
+
141
+ // ※ company_name が定数でない限りにおいて
142
+
143
+ //
144
+
145
+ // $_SESSION['company_name']
146
+
147
+ // と書く
148
+
149
+ //
150
+
151
+ // $_SESSION 変数から SQL に渡される例は通常ないはずだが、
152
+
153
+ // 一応何か特殊な状況があるのであろうという意味で、こkでは指摘の対象外。
154
+
155
+ //
156
+
157
+ // プロペアドステートメント で ?, ?, ? .... のように使う方法もあるが、
158
+
159
+ // 対応がわかりやすく、無用なミスを事前に防ぐ意味で、
160
+
161
+ // :column_name を使用
162
+
163
+ //
164
+
165
+ // 触れていない情報もあるので、詳細は公式リファレンスを読んでください。
166
+
167
+ //
168
+
169
+ $arr = [];
170
+
171
+ $arr[':company_name'] = $_SESSION['company_name'];
172
+
173
+ $arr[':company_unit'] = $_SESSION['company_unit'];
174
+
175
+ $arr[':name'] = $_SESSION['name'];
176
+
177
+ $arr[':name_furigana'] = $_SESSION['name_furigana'];
178
+
179
+ $arr[':mail_address'] = $_SESSION['mail_address'];
180
+
181
+ $arr[':tel1'] = $_SESSION['tel1'];
182
+
183
+ $arr[':tel2'] = $_SESSION['tel2'];
184
+
185
+ $arr[':tel3'] = $_SESSION['tel3'];
186
+
187
+ $arr[':fax1'] = $_SESSION['fax1'];
188
+
189
+ $arr[':fax2'] = $_SESSION['fax2'];
190
+
191
+ $arr[':fax3'] = $_SESSION['fax3'];
192
+
193
+ $arr[':postal_code1'] = $_SESSION['postal_code1'];
194
+
195
+ $arr[':postal_code2'] = $_SESSION['postal_code2'];
196
+
197
+ $arr[':zip'] = $_SESSION['zip'];
198
+
199
+ $arr[':address'] = $_SESSION['address'];
200
+
201
+ $arr[':contact_us'] = $_SESSION['contact_us'];
202
+
203
+
204
+
205
+ $stmt->execute($arr);
206
+
207
+ //$intLastInsertId = $pdo->lastInsertId();
208
+
209
+ } catch (\PDOException $e) {
210
+
211
+ var_dump($e);
212
+
213
+ }
214
+
215
+ ```