我试图在准备好的声明中运行一个准备好的声明,但没有成功。这是我的代码:
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
获取我正在尝试从另一个表中获取作者姓名。
你能告诉我任何方式这样做,或者这个脚本中的任何修改都可以完成它。
答案 0 :(得分:2)
有时这个网站的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];
}
答案 1 :(得分:-2)
使用另一个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();