我正在尝试使用 PHP 并尝试动态链接。我的问题是相应的 ID 与我的代码的 URL 不正确,所以我每次都有相同的链接。
这是我的:
<?php
$connection = mysqli_connect('localhost', 'root', 'password');
mysqli_select_db($connection, 'filme');
$query = "SELECT * FROM filme";
$result = mysqli_query($connection, $query);
$filmID = mysqli_fetch_assoc($result);
$array = array();
while($row = mysqli_fetch_assoc($result)){
$array[] = $row['Name'] . " - " . $row['Preis'];
}
$chunks = array_chunk($array, 4);
$filmID = mysqli_fetch_assoc($result);
echo "<table class='filme'>";
foreach ($chunks as $chunk){
echo '<tr>';
foreach ($chunk as $val) {
?><td><a href="dvd.php?Film_ID=<?php echo $filmID['Film_ID']; ?>"><?php echo $val; ?> </a></td><?php
}
echo '</tr>';
}
echo "</table>";
mysql_close();
?>
我想要做的是显示一个包含四列的表格,在每个单元格中都有一个格式为“电影名称 - 价格”的字符串,这个字符串应该是一个链接,指向相应的页面ID。此代码确实显示了我的四列表,但它缺少我的数据库的第一项,并且每个链接的 ID 都相同,即缺少的第一部电影的 ID。所以每个 URL 看起来像这样:
http://localhost/dvd.php?Film_ID=1000
但 ID 为 1000 的电影甚至没有列出。我考虑过将那个嵌套的 foreach 循环放入一个 while 循环中
while($filmID = mysqli_fetch_assoc($result)){
...
}
但是我得到一个空白页。
我几乎没有使用 php 的经验,如果我遗漏了一些非常明显的东西,我深表歉意。
最佳答案
你的做法是错误的。 $array
和 $filmID
的内容之间没有链接。实际上,$filmID
可能是空的,因为您之前已经运行过结果集。想象一下您的数据库结果集就像一叠论文。每次调用 fetchAssoc()
都会读取一张纸,并将其放在一边。一旦到达结果集的末尾,就没有什么可读的了,因此您的下一次调用将失败。您需要在一个循环中完成所有数据库提取。同样,您不应该将 mysql_close()
与 mysqli 一起使用。
<?php
$connection = mysqli_connect('localhost', 'root', 'password');
$connection->select_db('filme');
$query = "SELECT * FROM filme";
$result = $connection->query($query);
$array = array();
while($row = mysqli_fetch_assoc($result)){
$array[] = $row;
}
$chunks = array_chunk($array, 4);
echo "<table class='filme'>";
foreach ($chunks as $chunk){
echo '<tr>';
foreach ($chunk as $film) {
?><td><a href="dvd.php?Film_ID=<?php echo $film['Film_ID']; ?>"><?php echo "$film[Name] - $film[Preis]"; ?> </a></td><?php
}
echo '</tr>';
}
echo "</table>";
mysqli_close();
或者,更好的是,只使用更现代的 PDO 库:
<?php
$connection = new PDO("mysql:host=localhost;dbname=filme", "root", "password");
$query = "SELECT `Film_ID`, `Name`, `Preis` FROM filme";
$result = $connection->query($query);
$chunks = array_chunk($result->fetchAll(PDO::FETCH_ASSOC), 4);
?>
<table class='filme'>
<?php foreach ($chunks as $chunk):?>
<tr>
<?php foreach ($chunk as $film):?>
<td>
<a href="dvd.php?Film_ID=<?=$film['Film_ID']?>"><?=htmlspecialchars("$film[Name] - $film[Preis]")?></a>
</td>
<?php endforeach?>
</tr>
<?php endforeach?>
</table>
请注意,由于使用了 alternative syntax,此代码更加高效且更易于阅读和 short echo tags尽量减少 PHP 和 HTML 的混合。理想情况下,您的 PHP 将位于一个完全独立的文件中。
关于php - 从数据库结果更新动态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43531713/