0

现在和这里我正在准备“gallery_kategori”应该是高卢类别的ID

出现错误并描述如下:错误 2:命令不同步;你现在不能运行这个命令

我想要的: - 希望它进入画廊并拍摄属于类别或区域的照片。- 它不应该一直在一起,并且对于每个图像一次应该只有一个图像。

function galleryKategori()
 {
     if ($st = $this->mysqli->prepare('SELECT id, title FROM gallery_kategori')) { 
         $st->execute();
         $st->bind_result($id, $title);
         while ($st->fetch()) {
         ?>
         <a href="/galleri-indhold/<?php echo $id;?>/">
             <div class="galleryKategori">
                 <h4><?php echo $title;?></h4>
                 <?php
                     if ($stmt = $this->mysqli->prepare('SELECT rank, img FROM gallery WHERE kategori = ?')) {
                         $stmt->bind_param('i', $kategori);
                         $kategori = $id;
                         $stmt->execute();
                         $stmt->bind_result($rank, $img);
                         while ($stmt->fetch()) {
                             if($rank == 2)
                             {

                             }
                         }
                         $stmt->close();
                     } else {
                         echo 'Error 2: ' . $this->mysqli->error;
                     }
                 ?>
             </div>
         </a>
         <?php
         }
         $st->close();
     }
     else {
         echo 'Error 1: ' . $this->mysqli->error;
     }
 }

EIDT 版本

function galleryKategori()
{
    $st->free_result();
    if ($st = $this->mysqli->prepare('SELECT id, title FROM gallery_kategori')) { 
        $st->execute();
        $st->bind_result($id, $title);
        while ($result->fetch()) {
        ?>
        <a href="/galleri-indhold/<?php echo $id;?>/">
            <div class="galleryKategori">
                <h4><?php echo $title;?></h4>
                <?php
                    if ($stmt = $this->mysqli->prepare('SELECT rank, img FROM gallery WHERE kategori = ?')) {
                        $kategori = $id;
                        $stmt->bind_param('i', $kategori);
                        $stmt->execute();
                        $stmt->bind_result($rank, $img);
                        while ($stmt->fetch()) {
                            if($rank == 2)
                            {
                                echo "Hey";
                            }
                        }
                        $stmt->close();
                    } else {
                        echo 'Error 2: ' . $this->mysqli->error;
                    }
                ?>
            </div>
        </a>
        <?php
        }
        $st->close();
    }
    else {
        echo 'Error 1: ' . $this->mysqli->error;
    }
}
4

1 回答 1

0

在弄乱了您的代码之后,这是因为您还没有通过该连接释放您的第一个结果。

您将需要使用两个 MySQLi 对象或以您能够调用$st->free_result();此行之前的方式重写您的代码:

$stmt = $this->mysqli->prepare('SELECT rank, img FROM gallery WHERE kategori = ?')

这就是我让它正常工作所需要的一切。

2013 年 8 月 14 日编辑:

既然你问了,我会删除该函数(除非这是一个对象,它看起来不像)并混合使用内联和块 php。我对你将要对你的代码做什么有一些自由,但这里有一个可能有用的小例子。我将结果存储在一个数组中,释放结果,并重用相同的语句对象。

<?php
    if( ( $st = $mysqli->prepare( 'SELECT id, title FROM gallery_kategori' ) ) !== FALSE ) {

        $st->execute();
        $st->bind_result( $id, $title );

        while( $st->fetch() ) {
            $categories[$id] = $title;
        }
        $st->free_result();
        unset( $id, $title );
    }
    else {
        echo 'Error 1: ' . $mysqli->error;
    }
?>
<?php if( count( $categories ) > 0 ): ?>
    <?php foreach( $categories as $id => $title ): ?>
        <div class="galleryKategori">
            <h4>
                <a href="/galleri-indhold/<?php echo $id; ?>/">
                    <?php echo $title; ?>
                </a>
            </h4>
            <?php
                if( ( $st = $mysqli->prepare( 'SELECT rank, img FROM gallery WHERE kategori = ?' ) ) !== FALSE ) {

                    $st->bind_param( 'i', $id );
                    $st->execute();
                    $st->bind_result( $rank, $img );

                    while( $st->fetch() ) {
                        $gallery[$rank] = $img;
                    }
                    $st->free_result();
                    unset( $rank, $img );
                }
                else {
                    echo 'Error 2: ' . $mysqli->error;
                }
            ?>
            <?php if( count( $gallery ) > 0 ): ?>
                <ul>
                    <?php foreach( $gallery as $rank => $img ): ?>
                        <li class="gallery rank-<?php echo $rank; ?>">
                            <a href="/galleri-indhold/<?php echo $id; ?>/">
                                <img src="<?php echo $img; ?>" alt="Image <?php echo $rank; ?>" />
                            </a>
                        </li>
                    <?php endforeach; ?>
                </ul>
            <?php else: ?>
                <ul>
                    <li>There are no images in this category.</li>
                </ul>
            <?php endif; ?>
        </div>
    <?php endforeach; ?>
<?php else: ?>
    <p>Category Does Not Exist.</p>
<?php endif; ?>
<?php $mysqli->close(); ?>



笔记

  • 重构你的 html 元素,内联元素(锚)不应该包含块元素(div)。我更新了上面的代码以适当地显示它。
于 2013-08-13T22:27:29.330 回答