具有数据库id的动态php页面
您好,我正在尝试创建一个动态php页面,该页面随数据库行的id而变化 但直到现在我才知道,但它没有显示任何东西:-( 我试图从前面的问题中找到一些答案,但没有找到任何有助于我解决问题的答案 有没有人有什么好的简单的方法具有数据库id的动态php页面,php,mysql,Php,Mysql,您好,我正在尝试创建一个动态php页面,该页面随数据库行的id而变化 但直到现在我才知道,但它没有显示任何东西:-( 我试图从前面的问题中找到一些答案,但没有找到任何有助于我解决问题的答案 有没有人有什么好的简单的方法 <?php if (isset($_GET['id'])) { $id = $mysqli->real_escape_string($_POST['id']); $q = "SELECT * FROM `opskriftreg
<?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 */
}
}
?>
如果还有更简单的方法,我想学习另一种方法
- 我只包含了php代码,没有包含数据库连接。它可以工作,我已经测试过:-)
$id = $mysqli->real_escape_string($_POST['id']);
$q = "SELECT * FROM `opskriftreg` WHERE `id` = '$term' LIMIT 1;";
因此,我假设您的查询只返回零行,因为您正在丢弃$\u POST['id']
,并可能通过文本'$term'
字符串搜索空字符串
echo "SELECT * FROM `opskriftreg` WHERE `id` = '$term' LIMIT 1;";
注意:未定义变量:第3行D:\tmp\test.php中的术语从
opskriftreg
中选择*其中id
=''限制1
更糟糕的是,仅当存在第三个变量时才运行查询:
if (isset($_GET['id'])) {
我假设您想使用
$\u GET
变量,而不是$term
或$\u 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 */
}
}
你完全搞乱了变量
条件使用$\u获取['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
您尝试将“$q”中的一个更改为另一个名称,然后查看结果。然后试试这个$q=“SELECT*FROM opskriftreg,其中id=”$term“LIMIT 1”;开始时打开错误报告。。。您似乎不太了解该语言。您正在使用$term
,但它似乎没有在此上下文中定义。$\u GET['id']
!=$\u POST['id']
,$id
!=$term
,如果您echo“从`opskriftreg`中选择*,其中`id`='$term'限制1;”,那么您是在混合OOP和过程方法代码>你看到你想要的了吗?我上传了我的旧版本和表格。你说我不懂语言是什么意思?我有一个关于的错误报告,它没有显示任何内容。我得到一个错误:致命错误:在第14行的/home/www/.dk/work/dynamic_page.php中对非对象调用成员函数prepare()
您需要将$connection变量更改为MYSQLi连接变量返回到第1行:P现在它在dynamic_page.php?id=1处不再显示任何内容
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