Php 在无序列表中高效显示MySQL数据
我试图在MySQL中创建一个技能列表,并在index.php文件中的无序列表中逐个显示它 目前,我的方法如下,这给了我想要的结果(请注意:我实际上每次都会调用这个函数,每个技能都是11-这只是为了说明目的的数字2和3):Php 在无序列表中高效显示MySQL数据,php,mysql,Php,Mysql,我试图在MySQL中创建一个技能列表,并在index.php文件中的无序列表中逐个显示它 目前,我的方法如下,这给了我想要的结果(请注意:我实际上每次都会调用这个函数,每个技能都是11-这只是为了说明目的的数字2和3): 我使用的方法很有效,但显然效率不高,因为有15种个人技能 逻辑告诉我正确的方法是从“skillset”中选择all,然后循环遍历数组,但我在这样做时遇到了问题,并继续使用此方法。我建议按如下方式执行操作(仅在该示例中,对任何其他值执行您喜欢的操作) 是的,您可以通过使用I
我使用的方法很有效,但显然效率不高,因为有15种个人技能
逻辑告诉我正确的方法是从“skillset”中选择all,然后循环遍历数组,但我在这样做时遇到了问题,并继续使用此方法。我建议按如下方式执行操作(仅在该示例中,对任何其他值执行您喜欢的操作)
是的,您可以通过使用
IN
子句中的,id IN(2,3)
来更改该查询,就像这样,这样您只需要在一次查询中执行一次,即选择*FROM skillset ORDER by RAND()LIMIT 2
?之后,您可以根据数组的id对数组进行分组,然后是foreach和标记等等对不起,Islam Elshoboksh提供的打字错误修复在每个
中,您需要枚举所有技能集,(每个
都有2个id技能集)
等等,因此您可能需要首先对数组进行分组、获取、按id(或类别)分组,然后打印markup@Ghost我同意按id分组可能是必要的,但是,对数组进行分组是什么意思呢?您可以选择先获取数组,然后按id将其分组并放入容器(数组,ala$array[][]=skill
),然后将其显示在标记中(foreach with the
),或者,您可以在打印标记时简单地获取和分组。SQL中的groupby
不是正确的解决方案(更改为ORDER BY
-更不用说将GROUP BY与SELECT*
一起使用是个坏主意。感谢您的回答,我可以从逻辑上看出这是如何工作的,但是我已经在代码中实现了这一点,但是没有显示任何数据。我添加了一条带有错误消息的else语句,因此推测resultCheck即将到来返回为0。不确定为什么会发生这种情况,因为我没有更改任何其他内容。
<li><?php
$sql = "SELECT * FROM skillset WHERE id = 2;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {
echo $row[skill] . "<br>";
}
}?></li>
<li><?php
$sql = "SELECT * FROM skillset WHERE id = 3;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {
echo $row[skill] . "<br>";
}
}?></li>
$sql = "SELECT * FROM skillset WHERE id IN (1, 2, 3) ORDER BY id";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {
echo '<li>' . $row['skill'] . '<br></li>';
}
}
SELECT * FROM skillset WHERE id BETWEEN 1 AND 1000