簡體   English   中英

Mysqli While循環:在html內打印變量

[英]Mysqli While loop: print variables inside html

我的php While循環運行查詢,但是結果必須在html內打印。 在這一刻,我不知道如何做到這一點:

我的PHP 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'];
?>

在while循環之外。 在HTML中打印變量:

<?php echo $row['book_id']; ?> <br>
<?php echo $row['book_name']; ?>

在while循環和連接時關閉:

<?php
}
mysqli_close($dbconn);
?>

有准備好的陳述:

<?php
session_start();
$username = $_SESSION['Username'];

error_reporting(E_ALL);
ini_set('display_errors', 1);

include"config.inc.php";

/* connect to DB */
$mysqli = mysqli_connect("$host", "$user", "$mdp", "$db");

if (mysqli_connect_errno()) { echo "Error connecting : " . mysqli_connect_error($mysqli); }

$query = " SELECT * FROM books WHERE username=? ";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("s", $username);
$results = $stmt->execute();
$stmt->bind_result($book_id, $book_name);
$stmt->store_result();

if ($stmt->num_rows > 0) {
while($stmt->fetch()){
?>
<p><?php echo"$book_name"; ?> > <a href="editBook.php?bookid=<?php echo"$book_id"; ?>&book_name=<?php echo"$book_name"; ?>">Edit</a></p>
<?php
}
}
else
{ echo"[ no data ]"; }
?>

(重寫)

真正的問題是:

while ($rows = ...) ;

直到$rowsNULL為止。 因此,此后沒有任何顯示。

由於您是在單個函數調用中獲取整個數組的,因此不需要循環!

$rows = ...;

但是然后您需要引用first(?)行以獲得所需的數據:

$row = $rows[0];

因此,另一種方法是只獲取一行,然后關閉獲取過程。

在你的HTML中,你必須這樣做

 <a href="editBook.php?bookid=<?php echo $rows['book_id']; ?>&book_name=<?php echo $rows['book_name']; ?>">Edit</a> 

由於每個用戶可能有多本書籍,因此您必須在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的面向對象方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM