我试图做以下链接: test.com/article.php?=$id其中$ id来自数据库
$sql = "SELECT * FROM articles WHERE writer='$w_name' ";
$result = mysqli_query($conn, $sql);
$q = array();
$l = array();
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$q[]=$row['header'];
$l[]=$row['id'];
}
}
所以我有例如: $ q = 1,2,3和$ l =第一个链接名称,第二个链接名称,三维链接名称。
我试图用这种方式一起做,但它没有正确的做法:
<?
foreach($q as $header)
{
echo'<li>'.$header.'</li>';
}
?>
<?
foreach($l as $id)
{
echo "<a href='article.php?=$id'>".$header.'<br>'.'</a>';
}
?>
在这种情况下,我有3个不同的名称相同的链接,如:
<a href='article.php?=1'>1st link name</a>
<a href='article.php?=2'>1st link name</a>
<a href='article.php?=3'>1st link name</a>
我也尝试过:
<?
foreach($l as $id)
foreach($q as $header)
{ echo "<a href='article.php?=$id'>".$header.'<br>'.'</a>'; } ?>
But it gave me all combinations like:
<a href='article.php?=1'>1st link name</a>
<a href='article.php?=1'>2nd link name</a>
<a href='article.php?=1'>3d link name</a>
<a href='article.php?=2'>1st link name</a>
<a href='article.php?=2'>2nd link name</a>
<a href='article.php?=2'>3d link name</a>
<a href='article.php?=3'>1st link name</a>
<a href='article.php?=3'>2nd link name</a>
<a href='article.php?=3'>3d link name</a>
我是php和mysql的新手,我不知道如何解决这个问题
答案 0 :(得分:2)
foreach
循环最适合迭代单个数组。
如果您坚持将数据放在2个数组中,则使用带有索引而不是for
循环的foreach
循环来迭代数组会更容易。
所以试试这个:
for($i=0; $i < count($l); $i++) {
echo "<a href='article.php?=".$l[$i]."'>".$q[$i].'<br>'.'</a>';
}
在此示例中,使用带有$i
和$l[$i]
的索引$q[$i]
访问数据。
答案 1 :(得分:1)
你只需要一个阵列:
$sql = "SELECT * FROM articles WHERE writer='$w_name' ";
$result = mysqli_query($conn, $sql);
$q = array();
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$q[$row['id']]=$row['header'];
}
}
之后只需以您想要的格式打印数组:
foreach($q as $href => $text) {
echo '<a href="http://test.com/article.php?=' . $href . '">' . $text . '</a><br />';
}
答案 2 :(得分:0)
解决方案:
此解决方案将消耗更少的内存和效率。
你可以像这样使用它。假设你在文章表中有id和header字段。通过使用单次迭代(循环),您可以获得所需的结果。
$sql = "SELECT id,header FROM articles WHERE writer='$w_name' ";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$id = $row['id'];
echo "<a href='article.php?=$id'>" . $row['header'] . '</a>';
echo '<br />';
}
}