例えば、テーブルに該当するレコードがない場合、以下の$resultの結果をdumpした場合、空の配列を返してくれるわけではなくfalse(boolean)が返されます。こちらのような記事を見てこれがfalseであるか否かの判定をするべきかを少し立ち止まって考えてみました。
- 実際にはこのfalse(boolean)と言う結果は、結果が空であれば真偽型のfalseを返すという仕様ではなく、不適切な処理でこのような結果になっているのでしょうか?実際にこの結果のphpやmysqlが意図しているところをご存知であれば教えてください。
- もし「テーブルにが該当する行がない」という本来の意味で結果を得たい場合にはarray(0){}であるべきかとも思うのですが、その場合はfetchAll()が適切なのでしょうか?もしそうであるとすれば1)と関連してなぜfetch()では期待する空の配列を返してくれないのでしょうか?
よろしくお願い申し上げます。
php
1<?php 2 try { 3 $pdo->beginTransaction(); 4 try { 5 $stmt = $pdo->prepare('SELECT * FROM result_table WHERE tableid = :id'); 6 $stmt->bindValue(':id', $id, PDO::PARAM_INT); 7 $stmt->execute(); 8 $result = $stmt->fetch(PDO::FETCH_NUM); 9 10 $pdo->commit(); 11 } catch (PDOException $e) { 12 $pdo->rollback(); 13 throw $e; 14 } 15 } catch (PDOException $e) { 16 exit('データベース接続失敗。'.$e->getMessage()); 17 } 18 var_dump($result_getAlldata); 19?>

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/31 21:04