誰でも、なぜこのはfetchAll()が任意のアイデアを持っている
$stmt = $this->prepare($this->sql);
$exec = $stmt->execute($this->bindings);
// The below returns an empty array()
return $exec->fetchAll(PDO::FETCH_OBJ);
// This however will return rows if looped.
return $exec->fetch(PDO::FETCH_OBJ);
でも奇妙これはのみのために、私達のデータベース内の特定のIDの範囲で起こっていることである起こるすべての結果を)(フェッチとルーピング取得、空の配列を返します。たとえば、商品ID 552の商品に関するさまざまな情報を検索した場合、上記のコードはfetchAll()でも問題なく動作しますが、553に変更して失敗します(空の配列)。 554が再び動作します。アイテム間のDB内のデータには事実上違いはありません(すべて整数とタイムスタンプ[ジオロケーションデータ])。
いくつかのデバッグを追加します。実行後に$ stmtの行数を確認します。完全に失敗した場合、fetch/fetchallはboolean falseを返します。結果がない場合(ただし有効な結果ハンドル)、空の配列が返されます。ほとんどの場合、fetch/fetchallはFINEで動作しています。何も見つからないクエリです。 –
rowCountは23を返し、columnCountは2を返します。fetchもfetchAllもfalseを返しません。 raw sqlコマンド(準備されたstmtからエミュレートされた)を実行すると、コマンドラインで正常に動作します。 – varbrad
Ah、サーバを再起動してMySQLを停止して再起動しました。奇妙な問題。 – varbrad