bindParam()
のパラメータの数をOOPフレンドリでもっと見るために使用していたこのIFを変換する方法は考えられません。 ここでswitch
ステートメントを使用する以外のことができますか? とにかく彼のIFを持つのは良いOOPの練習ですか?IFをより多くのOOPに変換する方法
おそらくアドホック多型?私はいけないとして、ここで
class MySQL_Query {
protected $dbh;
public function __construct($dbh) {
$this->dbh = $dbh;
}
public function SelectQuery($query, $param) {
$PDOStatement = $this->$dbh->PDO->prepare($query);
if (isset($param[3])) {
$PDOStatement->bindParam($param[0], $param[1], $param[2], $param[3]);
} elseif (isset($param[2])) {
$PDOStatement->bindParam($param[0], $param[1], $param[2]);
} else {
$PDOStatement->bindParam($param[0], $param[1]);
}
$PDOStatement->execute();
$result = array();
while ($row = $statement->fetch(PDO::FETCH_NAMED)) {
$result[] = $row;
}
return $result;
}
}
EDIT私の解決策は、私がIF
を削除する方法を求めていたものである」彼らはPDO::PARAM_STR
として扱われ、あなたがそれを変更することはできませんので、直接へのparamsを通過したいです。ここで私は醜いを排除する方法ですIF
私はそれをternary IF
に翻訳しました。
$PDOStatement->bindParam( $param[0], //parameter
$param[1], //variable with value
!empty($param[2]) ? $param[2] : null, //data_type
!empty($param[3]) ? $param[3] : null, //length
!empty($param[4]) ? $param[5] : null //driver_options
);
は、あなただけの '$ PDOStatement->実行($のPARAM)に' $ param'を渡すことができませんでした; 'ステートメントを? – Darren
4つのパラメータを使用する場合はどうなりますか?パラメータを配列として渡し、直接渡すか、ループで実行します。 (配列を直接 'execute()'に渡すことができます – junkfoodjunkie