質問編集履歴

2

発生した事象について、新たな事実を追記しました

2018/03/06 08:07

投稿

TakahashiManabu
TakahashiManabu

スコア11

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- そうすると、Aのクラスファイル原因がありそうですが、Aのクラスには別のメソッドも明記されており、それらは正常に機能します。
13
+ そうすると、Aのクラスファイル原因がありそうです~~が、Aのクラスには別のメソッドも明記されており、それらは正常に機能します~~(追記:検証の結果、Aのクラスファイルにおいては、DBに接続しようとするメソッドにおいて、全てPDO接続がNULLとなっていました)
14
14
 
15
15
 
16
16
 

1

簡単にPHPスクリプトを記述しました

2018/03/06 08:06

投稿

TakahashiManabu
TakahashiManabu

スコア11

test CHANGED
File without changes
test CHANGED
@@ -19,3 +19,285 @@
19
19
 
20
20
 
21
21
  ソースを提示したいのですが、とてつもなく膨大でどこまで記載すればよいかわからず、ここまでの状況を取り急ぎ報告いたします。もし、上記のエラーコードが発生する原因にお心当たりがあれば、ご教示いただけますと幸いです。
22
+
23
+
24
+
25
+ **追記いたしました**
26
+
27
+
28
+
29
+ 下記に簡単ながらコードを記述いたします。
30
+
31
+ はじめにコントローラーとなるクラスファイルです。
32
+
33
+
34
+
35
+ ```PHP
36
+
37
+ //コントローラーA
38
+
39
+
40
+
41
+ <?php
42
+
43
+
44
+
45
+ class controllerA extends BaseController{
46
+
47
+
48
+
49
+ public function __construct(){
50
+
51
+
52
+
53
+ $this->fileModel = new fileModel();
54
+
55
+ $this->transact = new transactModel();
56
+
57
+ $this->mailer = new mailerModel();
58
+
59
+ $this->systemModel = new systemModel();
60
+
61
+
62
+
63
+ }
64
+
65
+
66
+
67
+ function methodCA(){
68
+
69
+
70
+
71
+ if(isset($_FILES['file']['name'])){
72
+
73
+
74
+
75
+ $file = $_FILES['file']['name'];
76
+
77
+
78
+
79
+ //ステータスコードがあればファイルチェックメソッドに移行
80
+
81
+ if(isset($_GET['statusCode']) && $_GET['statusCode']!=''){
82
+
83
+
84
+
85
+ //ファイルチェック
86
+
87
+ list($inspectedResult,$message) = $this->fileModel->fileInspection($file,$_GET['statusCode']);
88
+
89
+
90
+
91
+ //ファイルチェックを通過
92
+
93
+ if($inspectedResult == TRUE){
94
+
95
+ $filename = substr($file,0,9);
96
+
97
+
98
+
99
+ //格納ディレクトリを指定
100
+
101
+ $dir = _UPLOAD_DIR.'manuscripts/'.$filename.'/';
102
+
103
+
104
+
105
+ //ファイル名を変更 - ハッシュ値へ
106
+
107
+ $filehash = hash_file("sha1",$_FILES["file"]["tmp_name"]);
108
+
109
+
110
+
111
+ //ファイルを格納
112
+
113
+ $this->fileModel->storeFile($filename,$dir,$filehash);
114
+
115
+ echo '<p>'.$message.'</p>';
116
+
117
+
118
+
119
+ //ファイルアップロード情報の記録:**このメソッドがうまく機能しないのです**
120
+
121
+ $this->fileModel->registerFileHistory($filename,$filehash,$_FILES['file']['name'],$_GET['statusCode'],CURRENT);
122
+
123
+
124
+
125
+ //ステータスコードを変更する手続きへ
126
+
127
+ $this->transact->proceedStatusCode($_GET['statusCode'],$filename);
128
+
129
+
130
+
131
+ }else{
132
+
133
+
134
+
135
+ //ファイルチェックの結果、不適切だと認められた場合
136
+
137
+ echo '<p>'.$message.'</p>';
138
+
139
+ }
140
+
141
+ }
142
+
143
+
144
+
145
+ }else{
146
+
147
+
148
+
149
+ echo "ファイルがない・・・";
150
+
151
+ }
152
+
153
+
154
+
155
+ }
156
+
157
+
158
+
159
+
160
+
161
+ }
162
+
163
+ ```
164
+
165
+ 次にモデルを司るクラスファイルです。
166
+
167
+ ```PHP
168
+
169
+ class fileModel extends BaseModel{
170
+
171
+
172
+
173
+ //このメソッドを実行するとエラーになります。
174
+
175
+ public function registerFileHistory($articleID,$vName,$aName,$statusCode,$date){
176
+
177
+
178
+
179
+ $this->pdo->beginTransaction();
180
+
181
+
182
+
183
+ try{
184
+
185
+
186
+
187
+ $sql="INSERT INTO cl_file_inventry(articleID,virtualFileName,actualFileName,statusCode,dateUpdated) VALUES (:ID,:vName,:aName,:statusCode,:date)";
188
+
189
+ $stmh=$this->pdo->prepare($sql);
190
+
191
+ $stmh->bindValue(':ID',$articleID,PDO::PARAM_STR);
192
+
193
+ $stmh->bindValue(':vName',$vName,PDO::PARAM_STR);
194
+
195
+ $stmh->bindValue(':aName',$aName,PDO::PARAM_STR);
196
+
197
+ $stmh->bindValue(':statusCode',$statusCode,PDO::PARAM_STR);
198
+
199
+ $stmh->bindValue(':date',$date,PDO::PARAM_STR);
200
+
201
+
202
+
203
+ $stmh->execute();
204
+
205
+ $stmh->closeCursor();
206
+
207
+
208
+
209
+ $this->pdo->commit();
210
+
211
+
212
+
213
+ }catch(PDOException $Exception){
214
+
215
+ $this->pdo->rollBack();
216
+
217
+ print "エラー:".$Exception->getMessage();
218
+
219
+ }
220
+
221
+
222
+
223
+ }
224
+
225
+
226
+
227
+ }
228
+
229
+
230
+
231
+ //・・・・以下、いくつかのメソッド
232
+
233
+
234
+
235
+ ```
236
+
237
+ 最後に、ベースとなるモデルファイルです。
238
+
239
+ ```PHP
240
+
241
+ <?php
242
+
243
+
244
+
245
+ class BaseModel{
246
+
247
+
248
+
249
+ protected $pdo;
250
+
251
+
252
+
253
+ public function __construct(){
254
+
255
+ $this->db_connect();
256
+
257
+ }
258
+
259
+
260
+
261
+ //----------------------------------------------------
262
+
263
+ // データベース接続
264
+
265
+ //----------------------------------------------------
266
+
267
+ private function db_connect(){
268
+
269
+ try {
270
+
271
+ $this->pdo = new PDO(_DSN, _DB_USER, _DB_PASS,
272
+
273
+ array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")
274
+
275
+ );
276
+
277
+ $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
278
+
279
+ $this->pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
280
+
281
+
282
+
283
+ }catch(PDOException $Exception){
284
+
285
+ die('エラー :' . $Exception->getMessage());
286
+
287
+ }
288
+
289
+ }
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+ }
298
+
299
+
300
+
301
+ ?>
302
+
303
+ ```