プロジェクト

全般

プロフィール

Bug(バグ) #3344

opActivityQueryBuilder で特定のメソッドで配列を引き数に渡した場合にエラーが発生する

Yuya Watanabeほぼ11年前に追加. 約4年前に更新.

ステータス:
New(新規)
優先度:
Normal(通常)
担当者:
-
対象バージョン:
開始日:
2013-05-07
期日:
進捗率:

0%

3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

説明

概要

opActivityQueryBuilder で特定のメソッドで配列を引き数に渡した場合にエラーが発生する.

例えば下記のようなコードが考えられる. setViewerId() または includeMEmber() で配列を渡す場合となる.下記コードは両方共配列を指定している.

$builder = opActivityQueryBuilder::create();
$builder->setViewerId(array('1', '2'));
$builder->includeMember(array('1', '2'));
$builder->buildQuery()->execute();

エラー

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

この引き数の指定が想定されているかどうかは考慮していないため,この使い方が正しくない場合はコメントでその旨を示すか,コードから引き数が想定できる実装に変更することが望ましい.

原因

下記のように buildMemberQuery() の第二引数の $memberId は配列であることが許容されているように記述されているが,実際にここに配列を追加できるパターンでは 211 行目の $viewerId および $id が配列である必要があり,ここで配列を渡した場合にエラーが発生する.

lib/util/opActivityQueryBuilder.class.php
175   protected function buildMemberQuery($query, $memberId = null, $publicFlag = ActivityDataTable::PUBLIC_FLAG_SNS)
176   {
177     if (is_array($memberId))
178     {
179       $query->andWhereIn('a.member_id', $memberId);
180     }
lib/util/opActivityQueryBuilder.class.php
211         $relation = Doctrine::getTable('MemberRelationship')->retrieveByFromAndTo($this->viewerId, $id);

関連するチケット

関連している OpenPNE 3 - Bug(バグ) #3273: activity/search.json?member_id=? で特定メンバーのアクティビティを取得すると500エラーとなる Fixed(完了) 2012-12-06

履歴

#1 kaoru n約4年前に更新

  • 対象バージョンOpenPNE 3.10.x にセット

他の形式にエクスポート: Atom PDF