基本上我有一个带有名为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)">
但我不知道如何。
请帮忙。
答案 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
“退出 - 输出消息并终止当前脚本”