[英]Mysqli Prepare is not working inside another prepared statement
我试图在一个准备好的语句中运行一个准备好的语句,但是没有成功。 这是我的代码:
if ($stmt = $mysqli->prepare("SELECT author_id FROM posts")) {
$stmt->execute();
$stmt->bind_result($author_id);
while ($stmt->fetch()) {
if ($stmt2 = $mysqli->prepare("SELECT username FROM users WHERE id=? LIMIT 1")) {
$stmt2->bind_param("s", $author_id);
$stmt2->execute();
$stmt2->bind_result($username);
$stmt2->fetch();
$stmt2->close();
//showing username
echo $username;
}
}
$stmt->close();
}
我从一个表中获取author id
,然后从author id
中获取另一个表中的作者姓名。
您能告诉我执行此操作的任何方法吗,或者对该脚本进行任何修改都可以完成此操作。
有时,该站点的PHP部分使我感到疼痛。 问题不仅在编程的各个方面都缺乏非常基础的知识,而且答案也促进了糟糕的实践。
$conn->error
或通过将mysqli设置为异常模式的通常方法。 store_result()
这样整个代码就变成了
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$sql = "SELECT username FROM posts p, users u WHERE u.id=author_id";
$res = $mysqli->query($sql);
while ($row = mysqli_fetch_row()) {
echo $row[0];
}
使用另一个mysqli对象进行内部循环。
$mysqli = new mysqli(host, user, password, dbname);
$mysqli2 = new mysqli(host, user, password, dbname);
if ($stmt = $mysqli->prepare("SELECT author_id FROM posts")) {
$stmt->execute();
$stmt->bind_result($author_id);
while ($stmt->fetch()) {
if ($stmt2 = $mysqli2->prepare("SELECT username FROM users WHERE id=? LIMIT 1")) {
$stmt2->bind_param("s", $author_id);
$stmt2->execute();
$stmt2->bind_result($username);
$stmt2->fetch();
$stmt2->close();
//showing username
echo $username;
}
}
$stmt->close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.