快速提问。同时使用prepare
mysqli中的方法。这是可能的/一个好主意;在同一个mysqli连接中使用它两次?例子:
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;
}
我可能的错误是我使用了相同的变量和相同的数据库连接。我不是 100% 确定这会起作用,因为我已经调用了 $this->DBH,而它已经在父函数中使用了。有没有更好的方法来实现我想要实现的目标,或者我可以使用更好的结构。还是我应该放弃并使用单独的变量?哈哈
希望的结果:
$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'));