[英]Dynamic php page with database id
Hi I am trying to create a dynamic php page, that changes with the id of the database row.嗨,我正在尝试创建一个动态 php 页面,该页面随数据库行的 id 变化。
But till now I got this, but it doesn't show anything :-( Have tried to find some answers from previous questions, but found nothing that helped my problem.但直到现在我得到了这个,但它没有显示任何东西:-(试图从以前的问题中找到一些答案,但没有发现任何对我的问题有帮助的答案。
Anybody got any nice and simple tips how to do this??任何人有任何好的和简单的提示如何做到这一点?
<?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 */
}
}
?>
Would love to learn another way to do this, if there are any more simple ones.如果有更简单的方法,我很想学习另一种方法来做到这一点。
You have this:你有这个:
$id = $mysqli->real_escape_string($_POST['id']);
$q = "SELECT * FROM `opskriftreg` WHERE `id` = '$term' LIMIT 1;";
So I suppose your query simply returns zero rows since you are discarding $_POST['id']
and possibly searching所以我想你的查询只是返回零行,因为你正在丢弃
$_POST['id']
并可能搜索by a literal an empty string.'$term'
string通过文字
'$term'
字符串一个空字符串。
echo "SELECT * FROM `opskriftreg` WHERE `id` = '$term' LIMIT 1;";
Notice: Undefined variable: term in D:\\tmp\\test.php on line 3
注意:未定义变量:第 3 行 D:\\tmp\\test.php 中的术语
SELECT * FROMopskriftreg
WHEREid
= '' LIMIT 1;SELECT * FROM
opskriftreg
WHEREid
= '' LIMIT 1;
To make it worse, you only run the query if a third variable exists:更糟糕的是,只有在存在第三个变量时才运行查询:
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 */
}
}
?>
I've assumed you want to use the $_GET
variable instead of $term
or $_POST
.我假设您想使用
$_GET
变量而不是$term
或$_POST
。
I haven't tested this, and I prefer PDO to mysqli, but it should get you closer.我没有测试过这个,我更喜欢 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 */
}
}
You have complete mess with variables你完全搞砸了变量
Condition use $_GET['id']
条件使用
$_GET['id']
after that you arr using $id = .... $_POST['id']
之后你使用
$id = .... $_POST['id']
and inside SQL you have id = '$term'
在 SQL 中你有
id = '$term'
Try to be consistent in using variables.尝试在使用变量时保持一致。 I can assume that you need to update your code to
我可以假设您需要将代码更新为
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.