Project

General

Profile

Actions

Bug(バグ) #3344

open

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

Added by Yuya Watanabe over 11 years ago. Updated almost 5 years ago.

Status:
New(新規)
Priority:
Normal(通常)
Assignee:
-
Target version:
Start date:
2013-05-07
Due date:
% Done:

0%

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

Description

概要

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);

Related issues 1 (0 open1 closed)

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

Actions
Actions #1

Updated by kaoru n almost 5 years ago

  • Target version set to OpenPNE 3.10.x
Actions

Also available in: Atom PDF