Php 显示类别图像后的图像

Php 显示类别图像后的图像,php,mysqli,Php,Mysqli,现在,在这里,我正在准备这样的过程,“画廊卡泰戈里”应该是高卢的类别ID 错误出现并描述如下:错误2:命令不同步;现在不能运行此命令 我想要的是: -希望它进入画廊,拍摄一张属于不同类别或区域的照片。 -它不应该一直在一起,而且对于每个图像,一次只能有一个图像 function galleryKategori() { if ($st = $this->mysqli->prepare('SELECT id, title FROM 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;
     }
 }
函数galleryKategori() { 如果($st=$this->mysqli->prepare('SELECT id,title FROM gallery_kategori')){ $st->execute(); $st->bind_结果($id,$title); 而($st->fetch()){ ?>
在对代码进行了一些修改之后,这是因为您还没有使用该连接释放第一个结果

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

$stmt = $this->mysqli->prepare('SELECT rank, img FROM gallery WHERE kategori = ?')
这就是让它正常工作所需要的一切

2013年8月14日编辑:

既然你问了,我会删除这个函数(除非这是一个对象,它看起来不像它)我对如何使用代码做了一些自由的考虑,但这里有一个小例子,说明一些可能有效的方法。我将结果存储在一个数组中,释放结果,并重用相同的语句对象

<?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(); ?>


    在调用$stmt->bind_param('i',$kategori);?之前,您是否可以尝试声明$kategori=$id;?@Jason它可能不起作用:(将我的代码添加到我的答案中,我们SE志愿者以rep;)的形式提供提示。如果它能最好地解决您的问题,请不要忘记选择您的答案。
    <?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(); ?>