我一直在为自己的生命而战,并准备好声明。我尝试过的每个网站都有不同的语法。这就是我想要实现的目标:
$stmt = $mysqli->prepare("SELECT IdNum FROM TOAWorkOrdersNew WHERE WorkDate = ? AND TechNum = ?");
$stmt2 = $mysqli->prepare("SELECT IdNum FROM CallVolume WHERE WorkDate = ? AND ANI = ?");
---loop
----loop
$stmt->bind_param('ss', $IncDate, $TechNum);
$stmt->execute();
$stmt->store_result();
$WorkOrders = $stmt->num_rows;
$SubWorkOrders = $SubWorkOrders + $WorkOrders;
$stmt->free_result();
$stmt->close();
$stmt2->bind_param('ss', $IncDate, $CellNum);
$stmt2->execute();
$stmt2->store_result();
$CallCount = $stmt2->num_rows;
$SubCallCount = $SubCallCount + $CallCount;
$stmt2->free_result();
$stmt2->close();
}
}
语句返回 NULL。
最佳答案
您不应在循环内调用 $stmt->close()
。一旦你关闭语句,它就不再记得它是用什么准备的。
此外,您不需要每次循环都调用 $stmt->bind_param()
。参数绑定(bind)到引用,因此您可以在循环之前执行一次此操作,然后只需更新循环内的变量即可。
关于MySQL 准备语句语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17534037/