4

PDOを使用してこのスクリプトを書き直そうとしています:

データベースから値を取得する

mysql_select_db($database_db_FPF, $db_FPF);
$query_rsWorksMenu = "SELECT works.year, GROUP_CONCAT(workstitle.title) as titulos, GROUP_CONCAT(workstitle.id_title) as links FROM works JOIN workstitle ON works.id_year =      workstitle.id_year GROUP BY works.year ORDER BY works.year DESC";
$rsWorksMenu = mysql_query($query_rsWorksMenu, $db_FPF) or die(mysql_error());
$row_rsWorksMenu = mysql_fetch_assoc($rsWorksMenu);

値を表示

     <ul>
        <?php do { ?>
        <li><span><?php echo $row_rsWorksMenu['year']; ?></span>
            <ul>
                <?php 
                 $titulos = explode(",", $row_rsWorksMenu['titulos']);
                 $links = explode(",", $row_rsWorksMenu['links']); 
                 foreach(array_combine($links, $titulos) as $link => $titulo){ 
                ?>
                <li><span><a href="works.php?id=<?php echo $link; ?>"><?php echo $titulo; ?></a></span></li>
                <?php } ?>
            </ul>
        </li>
        <?php }while ($row_rsWorksMenu = mysql_fetch_assoc($rsWorksMenu)); ?>
    </ul>

私がこれまでに得たもの:

データベースから値を取得します。

$stmt2 = $conn->prepare('SELECT works.year, GROUP_CONCAT(workstitle.title) as titulos, GROUP_CONCAT(workstitle.id_title) as links FROM works JOIN workstitle ON works.id_year = workstitle.id_year GROUP BY works.year ORDER BY works.year DESC');
$stmt2->execute();
$result2 = $stmt2->setFetchMode(PDO::FETCH_OBJ);

値を表示

        <ul>
        <?php do { ?>
        <li><span><?php echo $result2->year; ?></span>
            <ul>
                <?php 
                 $titulos = explode(",", $result2->titulos);
                 $links = explode(",", $result2->links); 
                 foreach(array_combine($links, $titulos) as $link => $titulo){ 
                ?>
                <li><span><a href="works.php?id=<?php echo $link; ?>"><?php echo $titulo; ?></a></span></li>
                <?php } ?>
            </ul>
        </li>
        <?php }while ($row_rsWorksMenu = mysql_fetch_assoc($rsWorksMenu)); ?>
    </ul>

問題は、この行をどうすればよいかわからないことです。

}while ($row_rsWorksMenu = mysql_fetch_assoc($rsWorksMenu));

アップデート:

コードを変更します:

$stmt2 = $conn->prepare('...query...');
$stmt2->execute(); 
$result2 = $stmt2->fetchAll();

}while ($row_rsWorksMenu = $stmt2->fetchAll());

しかし、何も起こりません。

更新 2

私はこのコードを試します:

        <?php do { ?>
        <li><span><?php echo $result2->year; ?></span>
            <ul>
                <?php 
                 $titulos = explode(",", $result2->titulos);
                 $links = explode(",", $result2->links); 
                 foreach(array_combine($links, $titulos) as $link => $titulo){ 
                ?>
                <li><span><a href="works.php?id=<?php echo $link; ?>"><?php echo $titulo; ?></a></span></li>
                <?php } ?>
            </ul>
        </li>
        <?php }while($result2 = $stmt2->fetch()); ?>

そして、私の DOM は の正しい数を示しています<li>。しかし、値はありません。なんで?

4

2 に答える 2