「Article」というテーブルを持つMySQLデータベースからオブジェクトをフェッチしたい。 getLatestArticle()関数は以下の通りである:PHP PDO fetchObject() - idメンバ以外のデフォルト値のみを含むオブジェクト
public function getLatestArticle($priority){
$query = "select * from article where priority = :priority having date = max(date);";
$STH = $this->dbLink->prepare($query);
$STH->bindParam(':priority', $priority);
if(!$STH->execute()){
print_r($STH->errorInfo());
}else{
return $STH->fetchObject('Article');
}
}
が適切なクラスを含めた、と同じMySQLではクラス変数、コンストラクタのパラメータとカラム名の名前を持つことは、この生成します。
object(Article)#6 (8) { ["id":"Article":private]=> string(2) "13" ["title":"Article":private]=> string(0) "" ["subTitle":"Article":private]=> string(0) "" ["imgFilePath":"Article":private]=> string(0) "" ["contentFilePath":"Article":private]=> string(0) "" ["author":"Article":private]=> string(0) "" ["date":"Article":private]=> string(0) "" ["priority":"Article":private]=> string(0) "" }
私が手フィールド 'id'のみが正しいのに対し、他のすべてのオブジェクトはデフォルト値を使用しています。 setFetchMode(PDO :: FETCH_OBJ、 'Article')を使用し、fetch()を使用して、setFetchMode(PDO :: FETCH_CLASS、 'Article)を使用し、fetch()を不運に使ってみました。条において すべてのクラス変数がプライベートとして指定され、コンストラクタはそうのように提示されています
public function __construct($title="", $subTitle="", $imgFilePath="", $contentFilePath="", $author="", $date="", $priority = ""){
$this->title = $title;
$this->subTitle = $subTitle;
$this->imgFilePath = $imgFilePath;
$this->contentFilePath = $contentFilePath;
$this->author = $author;
$this->date = $date;
$this->priority = $priority;
}
が、私はコンストラクタでデフォルト値を削除し、国民に民間からクラスメンバーを変更してみました、欠落している引数のエラーが発生します。
fetchObject( 'Article')で取得したオブジェクトは、idフィールドのみが正しい値で終わるのはなぜですか?他のフィールドはすべてデフォルト値を使用しますか?
EDITは:、すべてのフィールドが正しく埋めなければならない連想配列を取得、言及を忘れていますが、質問2で始まるので、私は、私が質問1スキップします
すぐにお返事ありがとうございます:) –