php - mysql_fetch_assoc 用 php 回显链接表结果

标签 php mysql fetch associative-array

我试图使用 php 链接 3 个由相同值连接的表的结果。然后我希望每个动态的相关结果集在页面上作为 while 循环重复。这是我想要的结果:

艺术家->

系列1->作品1,作品2
series2->piece3, piece4

艺术家和系列表共享一个名为“艺术家”的匹配列。 Series 和 piece 表有一个匹配的列名“series”。我知道这些表通过数据库中相同的匹配值链接,就像在另一个页面上级联删除一样。

目前它仅将系列显示为 echo 重复循环,但两边都没有相关的艺术家或作品。像这样:http://www.exhibitjewellery.com/artistindex.php

我不确定 mysql_fetch_assoc 是否是正确的方法。我对表格是否完全正确链接感到困惑,或者问题是我如何划分正文部分以进行格式化。我有一种感觉,多维数组可能会有所帮助,甚至可能会嵌套表格,但我还没有完全理解所有细节是如何在代码的每个部分中结合起来的。请帮忙!

头顶的PHP:

<?php
mysql_select_db($database_connectmysql, $connectmysql);
$query_artistrecordset = "SELECT * FROM artists ORDER BY artist ASC";
$artistrecordset = mysql_query($query_artistrecordset, $connectmysql) or die(mysql_error());
$row_artistrecordset = mysql_fetch_assoc($artistrecordset);
$totalRows_artistrecordset = mysql_num_rows($artistrecordset);

mysql_select_db($database_connectmysql, $connectmysql);
$query_seriesrecordset = "SELECT * FROM series, artists WHERE series.artist=artists.artist ORDER BY exhibition ASC";
$seriesrecordset = mysql_query($query_seriesrecordset, $connectmysql) or die(mysql_error());
$resultseries = mysql_query($query_seriesrecordset);
$row_seriesrecordset = mysql_fetch_assoc($resultseries);
$totalRows_seriesrecordset = mysql_num_rows($seriesrecordset);

mysql_select_db($database_connectmysql, $connectmysql);
$query_piecerecordset = "SELECT * FROM pieces,series WHERE pieces.piece=series.series ORDER BY piece ASC";
$piecerecordset = mysql_query($query_piecerecordset, $connectmysql) or die(mysql_error());
$resultpiece = mysql_query($query_piecerecordset);
$row_piecerecordset = mysql_fetch_assoc($resultpiece);
$totalRows_piecerecordset = mysql_num_rows($piecerecordset);  
?>

这就是我试图在正文中回应它的方式:

<div id="serieslist" align="right">
     <?php echo $row_artistrecordset['artist']; ?><br />
     <?php echo $row_artistrecordset['website']; ?><br />
     <?php echo $row_artistrecordset['artist_statement']; ?><br />   
<?php do { ?>
     <?php echo $row_seriesrecordset['series']; ?><br />
     <?php echo $row_seriesrecordset['exhibition']; ?><br />
     <?php echo $row_seriesrecordset['series_statement']; ?><br />
<?php do { ?>
      <?php echo $row_piecerecordset['piece']; ?><br />
      <?php echo $row_piecerecordset['description']; ?><br />
      <?php echo $row_piecerecordset['category']; ?><br />
      <?php echo $row_piecerecordset['dimensions']; ?><br />
      <?php echo $row_piecerecordset['price']; ?><br />
          add to collection button<br />         
  <?php } while ($row_piecerecordset = mysql_fetch_assoc($resultpiece)); ?>  
  <?php } while ($row_seriesrecordset = mysql_fetch_assoc($resultseries)); ?>      
</div>
</body>
</html>
<?php
mysql_free_result($artistrecordset);
mysql_free_result($seriesrecordset);
mysql_free_result($piecerecordset);
?>

任何帮助将不胜感激,因为我已经为此工作了好几天!

最佳答案

根据您的代码,这里有一个转换为 mysqli 的版本,删除了一些冗余行。我无法对此进行测试,因此可能需要进行一些调试。

<?php
$connectmysql = mysqli_connect("dbhost","dbuser","dbname","dbname") or die("Database error:".mysqli_connect_error);

$query_artistrecordset = "SELECT * FROM artists ORDER BY artist ASC";
$artistrecordset = mysqli_query($connectmysql, $query_artistrecordset) or die(mysqli_error);

$query_seriesrecordset = "SELECT * FROM series, artists WHERE series.artist=artists.artist ORDER BY exhibition ASC";
$seriesrecordset = mysqli_query($connectmysql, $query_seriesrecordset ) or die(mysqli_error);

$query_piecerecordset = "SELECT * FROM pieces,series WHERE pieces.piece=series.series ORDER BY piece ASC";
$piecerecordset = mysqli_query($connectmysql, $query_piecerecordset) or die(mysqli_error);

echo "<div id="serieslist" align="right">"

while ($row_artistrecordset = mysqli_fetch_assoc($artistrecordset)) {
     echo $row_artistrecordset['artist'],"<br>";
     echo $row_artistrecordset['website'],"<br>";
     echo $row_artistrecordset['artist_statement'],"<br>";
while ($row_seriesrecordset = mysqli_fetch_assoc($seriesrecordset)) {
     echo $row_seriesrecordset['series'],"<br>";
     echo $row_seriesrecordset['exhibition'],"<br>";
     echo $row_seriesrecordset['series_statement'],"<br>";
while ($row_piecerecordset = mysqli_fetch_assoc($piecerecordset)) {  

    echo $row_piecerecordset['piece'],"<br>";
    echo $row_piecerecordset['description'],"<br>";
    echo $row_piecerecordset['category'],"<br>";
    echo $row_piecerecordset['dimensions'],"<br>";
    echo $row_piecerecordset['price'],"<br>";
      echo "add to collection button<br />";    
} // end of pieces
} // end of series
} //end of artists
mysqli_free_result($artistrecordset);
mysqli_free_result($seriesrecordset);
mysqli_free_result($piecerecordset);
echo "</div>";
?>

</body>
</html>

关于php - mysql_fetch_assoc 用 php 回显链接表结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17712179/

相关文章:

php - IF 内部 JSON 编码

PHP PDO 更新有 2 个表

php - 为什么 HTML 形式不将值插入到 Mysql 中?

php : variable into SQL QUERY (PDO)

mysql - MySQL 插入中的 Powershell 数组值正在输出整个数组

android - 如何使用 React Native 在 Android 上允许自签名证书

javascript - 用户未登录时 Wordpress AJAX 返回 0

javascript - Discordjs - 获取后 lastMessageId 始终为空事件

javascript - 使用 'beforeunload'/'unload' eventlistener 关闭浏览器后使用 Fetch 发送 POST 请求不起作用

mysql - 将 .bak 导入 MySQL (.sql)