我在PHP echo
上的引号有问题。我不确定这是因为我使用了错误的引号/将其放在错误的位置,还是因为我无法将按钮值设置为我所拥有的值(请参见代码)。
$sql = "SELECT * FROM calender WHERE userid=?;";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header ('Location: ../personalcalender.php?error=sqlerror');
exit();
}
else {
mysqli_stmt_bind_param($stmt, "s", $_SESSION['Id']);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
while ($row = mysqli_fetch_assoc($result)) {
echo "<center>" . $row['type'] ." ". $row['subject'] ." ". $row['message'] ." ".
"<button name='changeStatus' value=\". $row['calenderid'] .\">" . $row['mystatus'] . $row['calenderid'] . "</button>";
}
}
答案 0 :(得分:1)
妥善保存HTML和PHP可以避免此类问题。理想情况下,将它们放在单独的文件中,但至少要将PHP放在文件的顶部,并将HTML中的任何内容限制为仅显示。
将数据库结果加载到数组中,然后在适当的时间遍历它们。如果要输出为HTML,请使用htmlspecialchars()
始终转义数据。请注意alternative control structure syntax和short echo tags的使用。同样,在1999年,他们希望返回<center>
元素;)
<?php
$sql = "SELECT * FROM calender WHERE userid = ?";
$stmt = $conn->stmt_init();
if (!$stmt->prepare($sql)) {
header ('Location: ../personalcalender.php?error=sqlerror');
exit();
}
$stmt->bind_param("s", $_SESSION['Id']);
$stmt->execute();
$result = $stmt->get_result($stmt);
while ($row = $result->fetch_assoc()) {
$data[] = array_map('htmlspecialchars', $row);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>My page</title>
</head>
<body>
<!-- some more HTML goes here -->
<?php foreach ($data as $row):?>
<div style="text-align: center">
<?=$row['type']?> <?=$row['subject']?> <?=$row['message']?>
<button name="changeStatus" value="<?=$row['calenderid']?>">
<?=$row['mystatus']?> <?=$row['calenderid']?>
</button>
</div>
<?php endforeach;?>
<!-- some more HTML goes here -->
</body>
</html>