使用几个MYSQLI准备和获取

时间:2012-10-18 18:39:36

标签: php mysqli

我想要显示一个结果,该结果需要两个先前的查询;当我试图用新的Mysqli界面做这些东西时,我不能让它以正确的方式工作。

我有这个,输出是:警告:mysqli :: prepare()[mysqli.prepare]:必须在新的语句准备发生之前获取所有数据

$qryRdmPh="SELECT `id` FROM `table` ORDER BY RAND() LIMIT 0,30";
$stmtRdmPh = $mysqli->prepare($qryRdmPh);
$stmtRdmPh->execute();
$stmtRdmPh->bind_result($id);
 while($stmtRdmPh->fetch()) {
 //Obtener el atributo Frase
 $qryPhVal="SELECT `id_v` FROM `values` WHERE `id_p`='" . $id . "'";
 $stmtPhVal = $mysqli->prepare($qryPhVal);
 $stmtPhVal->execute();
 $stmtPhVal->bind_result($idV);
  while($stmtPhVal->fetch()){
  echo $idV;
  }
 }

必须有另一种方法来显示没有如此复杂的规则的结果......我已经读过使用Statement查询非常重要,但为什么呢?它使我的代码更长,更复杂。

编辑:如果有人解释我的陈述是否如此重要,以及我是否应该始终使用它,我真的会感谢。

1 个答案:

答案 0 :(得分:1)

总是有可能以这种方式执行相同的操作而不用嵌套查询。而且更重要的是......如果你这样做,它可能会伤害你的数据库。总是试着以简单的方式。

例如:如果您想进行依赖于当前查询的查询,那么在缓冲后创建缓冲区并插入所有行会更好。