我的php while循环运行查询,但结果必须在html内打印。在这一刻我不知道如何做到这一点:
我的php while while循环
<?php
include "connect.php";
$username=$_SESSION['Username'];
$result = mysqli_query($dbconn,"
SELECT *
FROM books
WHERE username = '$Username'
");
while($rows = mysqli_fetch_array($result));
?>
在此代码之后有一个Html代码,我想打印变量:
<a href="editBook.php?bookid=<?php echo $book_id; ?>&book_name=<?php echo $book_name; ?>">Edit</a>
此时变量为空
如何解决这个问题?
[已解决]更新 我已经解决了我的问题。这是正确的PHP脚本。工作正常:
<?php
include "connect.php";
$username=$_SESSION['Username'];
$result = mysqli_query($dbconn,"
SELECT *
FROM books
WHERE username = '$Username'
");
global $book_id, $book_name
while($row = mysqli_fetch_array($result)) {
$book_id = row['book_id'];
$book_name = row['book_name'];
?>
外循环。在Html中打印变量:
<?php echo $row['book_id']; ?> <br>
<?php echo $row['book_name']; ?>
关闭循环和连接:
<?php
}
mysqli_close($dbconn);
?>
答案 0 :(得分:1)
准备好的陈述:
Reader.ready()
答案 1 :(得分:1)
(重写)
真正的问题是:
while ($rows = ...) ;
此循环直到$rows
为NULL
。所以事后没有什么可以显示的。
由于您在单个函数调用中获取整个数组,因此不需要循环!
$rows = ...;
但是你需要引用第一行(?)来获得所需的数据:
$row = $rows[0];
因此,另一种方法是只获取一行,然后关闭获取过程。
答案 2 :(得分:0)
在你的HTML中,你必须这样做
<a href="editBook.php?bookid=<?php echo $rows['book_id']; ?>&book_name=<?php echo $rows['book_name']; ?>">Edit</a>
答案 3 :(得分:0)
由于每个用户可能有多本书,您必须在while
循环内打印链接,或将其存储在字符串中:
<?php
include "connect.php";
$username = $_SESSION['Username'];
$result = mysqli_query($dbconn,"
SELECT * FROM books
WHERE username = '$Username'
");
$links = ""; // all links are stored in this string
while($rows = mysqli_fetch_array($result)) {
// I assume that the columns are called `id` and `name`
$links .= '<a href="editBook.php?bookid='. $rows["id"] .'&book_name='. $rows["name"] .'">Edit '. $rows["name"] .'</a>';
}
?>
在html代码中只需编写
即可<?php echo $links ?>
请注意,您应该使用预准备语句。您还应该看一下面向对象的方法,使用mysqli
类来使用mysqli。