我想要显示一个结果,该结果需要两个先前的查询;当我试图用新的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查询非常重要,但为什么呢?它使我的代码更长,更复杂。
编辑:如果有人解释我的陈述是否如此重要,以及我是否应该始终使用它,我真的会感谢。
答案 0 :(得分:1)
总是有可能以这种方式执行相同的操作而不用嵌套查询。而且更重要的是......如果你这样做,它可能会伤害你的数据库。总是试着以简单的方式。
例如:如果您想进行依赖于当前查询的查询,那么在缓冲后创建缓冲区并插入所有行会更好。