[英]Dynamic php page with database id
嗨,我正在嘗試創建一個動態 php 頁面,該頁面隨數據庫行的 id 變化。
但直到現在我得到了這個,但它沒有顯示任何東西:-(試圖從以前的問題中找到一些答案,但沒有發現任何對我的問題有幫助的答案。
任何人有任何好的和簡單的提示如何做到這一點?
<?php
if (isset($_GET['id'])) {
$id = $mysqli->real_escape_string($_POST['id']);
$q = "SELECT * FROM `opskriftreg` WHERE `id` = '$term' LIMIT 1;";
$q = $mysqli->query($q);
if (mysqli_num_rows($q) > 0) {
$result = mysqli_fetch_assoc($q);
echo "<div class=\"article\">".
"<div class=\"title\">".$result['title']."</div>".
"<div class=\"body\">".$result['description']."</div>".
"<div class=\"desc\">"."Kort beskrivelse: ".$result['description']."</div>".
"<div class=\"ingredients\">"."ingredienser: ".$result['ingredients']."</div>".
"<div class=\"amount\">"."amount: ".$result['amount']."</div>".
"<div class=\"guidance\">"."guidance: ".$result['guidance']."</div>".
"<div class=\"hour\">"."hour: ".$result['hour']."</div>".
"<div class=\"minutes\">"."minutes: ".$result['minutes']."</div>".
"<div class=\"laktose\">"."laktose: ".$result['laktose']."</div>".
"<div class=\"okologisk\">"."okologisk: ".$result['okologisk']."</div>".
"</div>";
}
else {
/* Article not found */
}
}
?>
如果有更簡單的方法,我很想學習另一種方法來做到這一點。
你有這個:
$id = $mysqli->real_escape_string($_POST['id']);
$q = "SELECT * FROM `opskriftreg` WHERE `id` = '$term' LIMIT 1;";
所以我想你的查詢只是返回零行,因為你正在丟棄$_POST['id']
並可能搜索通過文字一個空字符串。'$term'
字符串
echo "SELECT * FROM `opskriftreg` WHERE `id` = '$term' LIMIT 1;";
注意:未定義變量:第 3 行 D:\\tmp\\test.php 中的術語
SELECT * FROMopskriftreg
WHEREid
= '' LIMIT 1;
更糟糕的是,只有在存在第三個變量時才運行查詢:
if (isset($_GET['id'])) {
<?php
if (isset($_GET['id'])) {
$id = $mysqli->real_escape_string($_GET['id']);
$sql = "SELECT * FROM `opskriftreg` WHERE `id` = ? LIMIT 1;";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('s', $id);
$stmt->execute();
$res = $stmt->get_result();
if (mysqli_num_rows($res) > 0) {
while ($result = $res->fetch_array(MYSQLI_ASSOC)) {
echo "<div class=\"article\">".
"<div class=\"title\">".$result['title']."</div>".
"<div class=\"body\">".$result['description']."</div>".
"<div class=\"desc\">"."Kort beskrivelse: ".$result['description']."</div>".
"<div class=\"ingredients\">"."ingredienser: ".$result['ingredients']."</div>".
"<div class=\"amount\">"."amount: ".$result['amount']."</div>".
"<div class=\"guidance\">"."guidance: ".$result['guidance']."</div>".
"<div class=\"hour\">"."hour: ".$result['hour']."</div>".
"<div class=\"minutes\">"."minutes: ".$result['minutes']."</div>".
"<div class=\"laktose\">"."laktose: ".$result['laktose']."</div>".
"<div class=\"okologisk\">"."okologisk: ".$result['okologisk']."</div>".
"</div>";
}
}
else {
/* Article not found */
}
}
?>
我假設您想使用$_GET
變量而不是$term
或$_POST
。
我沒有測試過這個,我更喜歡 PDO 而不是 mysqli,但它應該讓你更接近。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$id = isset($_GET['id']) ? $_GET['id'] : (isset($_POST['id']) ? $_POST['id'] : false);
if ($id) {
$stmt = $mysqli->prepare("SELECT * FROM `opskriftreg` WHERE `id` = ? LIMIT 1");
$stmt->bind_param('i', $id);
$stmt->execute();
$result = $stmt->get_result()->fetch_array(MYSQLI_ASSOC);
if ($result) {
echo "<div class=\"article\">".
"<div class=\"title\">".$result['title']."</div>".
"<div class=\"body\">".$result['description']."</div>".
"<div class=\"desc\">"."Kort beskrivelse: ".$result['description']."</div>".
"<div class=\"ingredients\">"."ingredienser: ".$result['ingredients']."</div>".
"<div class=\"amount\">"."amount: ".$result['amount']."</div>".
"<div class=\"guidance\">"."guidance: ".$result['guidance']."</div>".
"<div class=\"hour\">"."hour: ".$result['hour']."</div>".
"<div class=\"minutes\">"."minutes: ".$result['minutes']."</div>".
"<div class=\"laktose\">"."laktose: ".$result['laktose']."</div>".
"<div class=\"okologisk\">"."okologisk: ".$result['okologisk']."</div>".
"</div>";
}
else {
/* Article not found */
}
}
你完全搞砸了變量
條件使用$_GET['id']
之后你使用$id = .... $_POST['id']
在 SQL 中你有id = '$term'
嘗試在使用變量時保持一致。 我可以假設您需要將代碼更新為
if (isset($_GET['id'])) {
$statement = $mysqli->prepare("SELECT * FROM `opskriftreg` WHERE `id` = ? LIMIT 1");
$statement->bind_param('i', $_GET['id']); //Replace ? above with our input, specifying ‘i’ meaning that we are passing one integer.
$statement->execute(); //Run the query
$result = $statement->get_result()->fetch_assoc();
// here goes your code
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.