gpt4 book ai didi

PHP - 显示数据库中具有相同列值的记录

转载 作者:行者123 更新时间:2023-11-29 02:14:53 25 4
gpt4 key购买 nike

我正在尝试显示数据库中具有相同列值的一些记录。它正在显示,但问题是它会多次显示,具体取决于该特定列值有多少行。

例子:

ID | NAME | TOPIC | COMMENT
===x======x=======x========
1 | Jane | ABC | hello
2 | Doe | ABC | hello
3 | Mary | ABC | hello
4 | Pop | DEF | hello
5 | Tris | DEF | hello

如果我尝试按 TOPIC 显示这些记录,它看起来像这样。

主题:ABC

ID | NAME | TOPIC | COMMENT
===x======x=======x========
1 | Jane | ABC | hello
2 | Doe | ABC | hello
3 | Mary | ABC | hello

ID | NAME | TOPIC | COMMENT
===x======x=======x========
1 | Jane | ABC | hello
2 | Doe | ABC | hello
3 | Mary | ABC | hello

ID | NAME | TOPIC | COMMENT
===x======x=======x========
1 | Jane | ABC | hello
2 | Doe | ABC | hello
3 | Mary | ABC | hello

它显示了 3 次,因为该主题有 3 个条目。如果我选择一个主题,我想显示一次记录。

这是我的代码:

<?php
if(isset($_POST['sortBtn']))
{
$sortEvent = $_POST['sort_event'];
$sortQuery = "SELECT event_topic FROM tbl_comment";
$sortResult = mysqli_query($dbcon, $sortQuery);

while($row = mysqli_fetch_assoc($sortResult))
{
if($sortEvent == $row['event_topic'])
{

$query = "SELECT * FROM tbl_comment WHERE event_topic = '". $sortEvent . "'";
$result = mysqli_query($dbcon, $query);

echo "<table class='tbEvents' border='1'>";
echo "<tr>";
echo "<th class='tHead'>#</th>";
echo "<th class='tHead'>User's Name</th>";
echo "<th class='tHead'>Event Topic</th>";
echo "<th class='tHead'>Comment</th>";
echo "<th class='tHead'>Date / Time</th>";
echo "</tr>";
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td class='tData'>". $row["user_number"] ."</td>";
echo "<td class='tData'>". $row["user_nickname"] ."</td>";
echo "<td class='tData'>". $row["event_topic"] ."</td>";
echo "<td class='tData'>". $row["user_comment"] ."</td>";
echo "<td class='tData'>". $row["date_time"] ."</td>";

echo "</tr>";

}
} else {
echo "0 results";
}
echo "</table>";
}
}
}
?>

我尝试执行 GROUP BY、ORDER BY、DISTINCT,但没有任何效果。它要么以相同的方式显示,要么出现错误。

编辑:

如果我添加 ORDER BY 或 GROUP BY,我会得到这个错误:

Trying to get property of non-object

在这行代码中:

if ($result->num_rows > 0)

最佳答案

当你运行 SELECT event_topic FROM tbl_comment ,它会获取表中的所有记录(然后您稍后应该使用 WHERE 进行手动比较)。

表格中有 6 行。当$sortEvent不是 ABC ,循环将立即退出;这意味着你的循环运行了 3 次,这意味着 <table>也显示3次。

您可以完全摆脱外部循环并使用下面的查询代码,这将阻止 SQL Injections :

        $query = "SELECT * FROM tbl_comment WHERE event_topic = ?";
$query->bind_param('s', $_POST['sort_event']);
$result = mysqli_query($dbcon, $query);

关于PHP - 显示数据库中具有相同列值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41528292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com