1

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

我有这个,输出是:Warning: mysqli::prepare() [mysqli.prepare]: All data must be fetched before a new statement 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;
  }
 }

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

编辑:如果有人向我解释声明是否如此重要,以及我是否应该始终使用它们,我将非常感谢。

4

1 回答 1

1

总是有可能在不以这种方式嵌套查询的情况下做同样的事情。更重要的是......如果你这样做,它可能会损害你的数据库。始终尝试获得更简单的方法。

例如:如果要执行依赖于当前查询的查询,最好创建一个缓冲区并在缓冲后插入所有行。

于 2012-10-27T19:07:18.237 回答