从db获取id并在另一页

时间:2016-02-14 15:30:10

标签: php html mysql database permalinks

基本上我有一个带有名为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)"> 

但我不知道如何。

请帮忙。

1 个答案:

答案 0 :(得分:2)

  

“我想我应该使用<a href apartment.php?id= (variable of the id of the chosen link)>

更正,并确保=符号后面没有空格。

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

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

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

旁注:您的ID必须是int类型才能使其正常运行。

在您的第一页:

替换正在回复的当前href行:

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

然后在第二页上:

旁注: (int)使用(int)$_GET['id']使其成为一个安全的阵列。

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']apartment之间的空格name

要小心,因为如果在查询中使用空格可能会导致问题,而您没有使用ticks来逃避它。

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

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

  

“退出 - 输出消息并终止当前脚本”