从数据库中获取 id 并在另一个页面中显示内容

get id from db and display contents in another page

基本上我有一个带有 table 的数据库,名为 apartments,我使用此代码在一页上输出内容:

$connect = mysqli_connect("localhost","root","","db_dice");
$query = "SELECT * FROM apartment ORDER BY ID DESC";
$records = mysqli_query($connect,$query);

//check connection
if ($connect->connect_error) {
    die('Connection failed: ' . $conn->connect_error);
    echo 'err';
}   

while($show=mysqli_fetch_array($records)){
    echo '<div class="div-recentupdate" style="background-color:white">';
    echo '<a href="apartment.php">'.$show['apartment name'].' Bedroom:'.$show['bedroom'].' Price:$'.$show['price'].' <br></a>';
    echo '</div>';  
}

问题很简单(我用惯了mvc所以不知道这个,不好意思)。

我想要的是在另一个名为 apartment.php

的页面上输出数据库的内容(公寓名称、卧室等)

我想我应该使用

<a href="apartment.php?id=(variable of the id of the chosen link)"> 

但我不知道怎么做。

请帮忙。

"I think I'm supposed to use <a href apartment.php?id= (variable of the id of the chosen link)>"

更正,确保=符号后没有space。

首先,我们需要使用 ?id 来从数据库中获取记录(并传递到第二页),同时将其分配给 id 行,使用:

  • $show['ID'] 在第一页的 href 内使用您发布的现有代码。

然后在第二页上,您将使用 WHERE 子句使用从变量中获取的 id 并检查赋值是否已设置。

旁注:您的 ID 必须是 int 类型才能正常工作。

在您的第一页中:

将正在回显的当前 href 行替换为:

echo '<a href="?id='.$show['ID'].'">'.$show['apartment name'].' Bedroom:'.$show['bedroom'].' Price:$'.$show['price'].' <br></a>';

然后在你的第二页:

旁注:(int)$_GET['id']使用(int)使其成为安全数组。

if(isset($_GET['id'])){

$id = (int)$_GET['id'];

$query_fetch = mysqli_query($connect,"SELECT * FROM apartment WHERE ID = $id");

 while($show = mysqli_fetch_array($query_fetch)){
    echo "ID: " . $show['ID'] . " " . $show['apartment name']. " Bedroom:".$show['bedroom']." Price:$".$show['price']." <br></a>";
 } // while loop brace

} // isset brace

else{
    echo "It is not set.";
}

另一个旁注:

您也可以使用以下代替 (int)

$id = filter_var($_GET['id'], FILTER_SANITIZE_NUMBER_INT);

脚注:

我注意到 $show['apartment name']apartmentname 之间有一个 space。

请注意这一点,因为如果在未使用标记转义的查询中使用 spaces 可能会导致问题。

即:这会失败并导致语法错误:

SELECT * FROM apartment WHERE ID = $id AND apartment name = 'apartment 101'

您需要做并注意 apartment name 名称周围的勾号:

SELECT * FROM apartment WHERE ID = $id AND `apartment name` = 'apartment 101'

最好用下划线作为分词,就说.


错误检查:

error reporting 添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:显示错误应该只在试运行中进行,绝不能在生产中进行。

以及or die(mysqli_error($connect))mysqli_query()

参考文献:

我发现的另一件事是,您在这里使用了不正确的变量:

$conn->connect_error)

应该是$connect,而不是$conn

那么你的 echo"err"; 永远不会发生,因为你已经使用了 die()

来自手册:

此语言结构等同于 exit()。 http://php.net/manual/en/function.exit.php

"exit — Output a message and terminate the current script"