簡単な質問です。prepare
mysqli でメソッドを使用している間。それは可能です/良い考えです。同じmysqli接続内で2回使用するには? 例:
OOPレイヤード
public function getStuff(){
$posts=array();
$query = $this->DBH->prepare('SELECT * FROM table WHERE stuff =?');
$query->bind_param('s','param');
$query->execute();
$query->bind_result($ID,$col1,$col2,$etc);
while($query->fetch()){
$posts[]=array('ID'=>$ID,'col1'=>$col1,'extras'=>$this->getExtras($ID));
}
$query->close();
return $posts;
}
private function getExtra($postID){
$extras=array();
$query = $this->DBH->prepare('SELECT * FROM anotherTable WHERE moreStuff =?');
$query->bind_param('s',$postID);
$query->execute();
$query->bind_result($ID,$col1,$col2,$etc);
while($query->fetch()){
$extras[]=array('ID'=>$ID,'col1'=>$col1,'etc'=>$etc);
}
$query->close();
return $extras;
}
私の考えられるエラーは、同じ変数と同じデータベース接続を使用したことです。親関数で既に使用されている間に $this->DBH を呼び出したので、これが機能するかどうかは 100% 確信が持てません。私が達成しようとしていることに対するより良い方法はありますか、それとも私が使用できるより良い構造はありますか? それとも、あきらめて別の変数を使用する必要がありますか? 笑
期待される結果:
$posts=array('ID'=>'column ID number','col1'=>'column1 data', 'extras'=>array('ID'=>'second table\'s ID number','col1'=>'second tables data','etc'=>'etc etc etc'));