2つのパラメーターを受け取る関数を作成しています。1つ目はユーザーのID(デフォルトは%)で、2つ目は取得するフィールド(デフォルトは*)です。最初のパラメーターは正常に機能しますが、何らかの理由で、プリペアドステートメントのパラメーターの値としてアスタリスクを使用しようとすると、奇妙な結果が得られます(以下にリストされています)。プリペアドステートメントでアスタリスクを使用できないが、パーセント記号は使用できる理由はありますか?私の機能は以下の通りです:
public function getMembers($id = '%', $fields = '*') {
$sql = 'SELECT ?
FROM members
WHERE members.member_id LIKE ?;';
return $this->executeQuery($sql, array($fields, $id));
}
これがexecuteQuery関数です。
public function executeQuery($query, array $parameters = array(), $fetch_type = PDO::FETCH_ASSOC) {
$result = array();
$sth = $this->handle->prepare($query);
if($sth->execute($parameters)) {
while($row = $sth->fetch($fetch_type)) {
array_push($result, $row);
}
}
return $result;
}
そして最後に、デフォルトのアスタリスクを使用した場合の結果は次のとおりです。
Array
(
[0] => Array
(
[*] => *
)
)