質問編集履歴

4

解決した方法を追加

2018/08/23 12:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  <?php
20
20
 
21
- $stmt = $fwdb->prepare( $query );
21
+ $stmt = $pdo->prepare( $query );
22
22
 
23
23
 
24
24
 
@@ -331,3 +331,113 @@
331
331
  'delete_flg' => int 0
332
332
 
333
333
  ```
334
+
335
+
336
+
337
+ ## 解決方法
338
+
339
+
340
+
341
+ 今回は以下のように修正して解決しました。
342
+
343
+ 少々難しく考え過ぎていたのだと思います。ありがとうございました。
344
+
345
+
346
+
347
+ ```php
348
+
349
+ <?php
350
+
351
+ $stmt = $pdo->prepare( $query );
352
+
353
+
354
+
355
+ $stmt->execute( (array) $bind_params );
356
+
357
+
358
+
359
+ for ( $i = 0; $i < $stmt->columnCount(); $i ++ ) {
360
+
361
+ $column = $stmt->getColumnMeta( $i );
362
+
363
+
364
+
365
+ if ( isset( $column['native_type'] ) === true ) {
366
+
367
+ switch ( $column['native_type'] ) {
368
+
369
+ case 'TINY':
370
+
371
+ case 'SHORT':
372
+
373
+ case 'INT24':
374
+
375
+ case 'LONG':
376
+
377
+ case 'LONGLONG':
378
+
379
+ $pdo_type = PDO::PARAM_INT;
380
+
381
+ break;
382
+
383
+ default:
384
+
385
+ $pdo_type = PDO::PARAM_STR;
386
+
387
+ }
388
+
389
+ }
390
+
391
+
392
+
393
+ $row[ $column['name'] ] = $pdo_type;
394
+
395
+ }
396
+
397
+
398
+
399
+ if ( $mode === 'all' ) {
400
+
401
+ $tmp = $stmt->fetchAll();
402
+
403
+ $tmp_count = count( $tmp );
404
+
405
+
406
+
407
+ for ( $i =0; $i < $tmp_count; $i++ ) {
408
+
409
+ foreach ( $tmp[ $i ] as $k => $v ) {
410
+
411
+ $result[$i][ $k ] = ( $row[ $k ] === PDO::PARAM_INT ) ? (int) $v : (string) $v;
412
+
413
+
414
+
415
+ unset( $row[ $k ] );
416
+
417
+ }
418
+
419
+
420
+
421
+ unset( $tmp[ $i ] );
422
+
423
+ }
424
+
425
+ } else {
426
+
427
+ $tmp = $stmt->fetch();
428
+
429
+
430
+
431
+ foreach ( $tmp as $k => $v ) {
432
+
433
+ $result[ $k ] = ( $row[ $k ] === PDO::PARAM_INT ) ? (int) $v : (string) $v;
434
+
435
+
436
+
437
+ unset( $tmp[ $k ], $row[ $k ] );
438
+
439
+ }
440
+
441
+ }
442
+
443
+ ```

3

脱字

2018/08/23 12:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- アドバイスほど、よろしくお願いいたします。
5
+ アドバイスほど、よろしくお願いいたします。
6
6
 
7
7
 
8
8
 
@@ -94,7 +94,7 @@
94
94
 
95
95
 
96
96
 
97
- 本当は for の部分は不要なのですが、とあるレンタルサーバーの PDO Driver が MySQL なため、結果が全て文字列になってしまうために [PDOでフェッチした数値型カラムの値が文字列で取得されるのでなんとかしようと頑張った。](http://d.hatena.ne.jp/erio_nk/20120621/1340267044) より拝借しました。mysqlnd をインストールできれば、悩むことはないのですが………。
97
+ 本当は for の部分は不要なのですが、とあるレンタルサーバーの PDO Driver が mysqlnd ではなく MySQL を使用しており、結果が全て文字列になってしまうために [PDOでフェッチした数値型カラムの値が文字列で取得されるのでなんとかしようと頑張った。](http://d.hatena.ne.jp/erio_nk/20120621/1340267044) より拝借しました。mysqlnd をインストールできれば、悩むことはないのですが………。
98
98
 
99
99
 
100
100
 

2

mts10806 さんからの修正依頼の内容を反映

2018/08/23 10:42

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,5 @@
1
1
  PHP 7.1 で上手く配列を作成できずに四苦八苦しています。
2
2
 
3
- PHP の基礎的な部分で悩んでいるのだと思います。
4
-
5
3
 
6
4
 
7
5
  アドバイスほど、よろしくお願いいたします。

1

読みづらかったため修正

2018/08/23 10:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -16,10 +16,6 @@
16
16
 
17
17
 
18
18
 
19
- ※ for の中は [PDOでフェッチした数値型カラムの値が文字列で取得されるのでなんとかしようと頑張った。](http://d.hatena.ne.jp/erio_nk/20120621/1340267044)をコピペしています
20
-
21
-
22
-
23
19
  ```php
24
20
 
25
21
  <?php
@@ -100,7 +96,7 @@
100
96
 
101
97
 
102
98
 
103
- 本当は for の部分は不要なのですが、とあるレンタルサーバーの PDO Driver が MySQL なため、結果が全て文字列になってしまうために拝借しました。mysqlnd をインストールできれば、悩むことはないのですが………。
99
+ 本当は for の部分は不要なのですが、とあるレンタルサーバーの PDO Driver が MySQL なため、結果が全て文字列になってしまうために [PDOでフェッチした数値型カラムの値が文字列で取得されるのでなんとかしようと頑張った。](http://d.hatena.ne.jp/erio_nk/20120621/1340267044) より拝借しました。mysqlnd をインストールできれば、悩むことはないのですが………。
104
100
 
105
101
 
106
102