0

私のエラー:Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in .../gallery.php on line 81

ちょっとしたことだと思いますが、これが私のコードです。承認された場合は、各行から画像などを取得し、それに応じて表示する必要があります。

いいプレーをしたくないようです:(

以前にこの問題を経験した人はいますか?

<?php
$page = 'gallery';
include 'header.php';

$can_vote = TRUE; //expand

$query = "SELECT COUNT(`id`) as 'count' FROM `$db_name`.`gallerytable` WHERE `approve` = 1 LIMIT 1;";
$result = mysql_query($query);
$result = mysql_fetch_array($result);
$total_entry = $result['count'];

$current_page = (int) $_GET['page'];
$current_page = ($current_page == 0) ? 1 : $current_page;

?>

<header id="main-head" class="clearfix">
    <div style="height:103px;overflow:hidden;">&nbsp;</div>
    <nav id="main-nav">
    </nav><!-- #main-nav -->
</header><!-- #main-head -->

<div id="main-content" class="clearfix">

    <?php if($total_entry > 20): ?>
    <?php
    $start_range = range(1, $total_entry, 20);
    $end_range = ($total_entry < 40) ? array(20, $total_entry) : range(20, $total_entry, 20);
    ?>

    <div id="paging-wrap" class="clearfix">
        <ul id="paging-nav">
        <?php
        $output = '';

        //prev link
        $prev_page = $current_page - 20;
        if($prev_page >= 1)
            $output .= '<li><a href="?p=gallery&amp;page='.$prev_page.'">&lt;</a></li>';

        //show page links
        foreach($start_range as $key => $number) {
            $output .= '<li><a href="?p=gallery&amp;page='.$number.'">'.$number.'-'.$end_range[$key]."</a></li>\n";
            $last_start_number = $number;
        }

        //hack last link
        $output = str_replace('-</a></li>', '-'.$total_entry.'</a></li>', $output);
        if($last_start_number == $total_entry) {
            $output = str_replace('<li><a href="?p=gallery&amp;page='.$last_start_number.'">'.$last_start_number.'-'.$last_start_number.'</a></li>','<li><a href="?p=gallery&amp;page='.$last_start_number.'">'.$last_start_number.'</a></li>', $output );
        }
        //set active page
        $output = str_replace('<a href="?p=gallery&amp;page='.$current_page.'">', '<a href="?p=gallery&amp;page='.$current_page.'" class="active">', $output);

        $next_page = $current_page + 20;
        if($next_page <= $last_start_number)
            $output .= '<li><a href="?p=gallery&amp;page='.$next_page.'">&gt;</a></li>';

        echo $output;
        ?>
        </ul><!-- #paging-nav -->
        <span id="paging-title">Display</span>
    </div><!-- #paging-wrap -->
    <?php else: ?>
    <div id="blank-paging"></div>
    <?php endif; //total entry > 20 ?>
    <div id="gallery-wrap">
    <?php 
    if($total_entry > 0) :
        //show entry
        $ip_address = $_SERVER['REMOTE_ADDR'];
        $limit_start = $current_page - 1;
        $number = $current_page;

        $url = ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) ? 'https://' : 'http://';
        $url .= $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);
        ?>
            <?php while($row = mysql_fetch_object($result)): ?>
                <div class="photo-wrap can-vote">
                    <img height="113px" style="height:113px;overflow:hidden;line-height:0;" src="<?php echo $url ?>/inc/timthumb.php?src=<?php echo $url ?>/photos/<?php echo $row->photo ?>&amp;w=136&amp;h=113&amp;q=100&amp;a=t" alt="photo-contest" />
                </div>
            <?php $number++; endwhile; ?>
    <?php else: ?>
    <h2>no-one here</h2>
    <?php endif ?>
    </div><!-- #gallery-wrap -->
</div><!-- #main-content -->
<footer id="footer-main">

</footer><!-- #footer-main -->
<?php
$form_key = $formKey->generateKey();
$_SESSION['form_key'] = $form_key;
?>
<script> var key_val = '<?php echo $form_key ?>';</script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/jquery-ui.min.js"></script>
<?php include 'footer.php'; ?>
4

4 に答える 4

2

$ resultを補充している$result = mysql_fetch_array($result);ので、$resultがmysqlリソースではなくなったことは明らかです。コードの後半で、を使用してコードからデータをフェッチしようとしていmysql_fetch_object($result)ます。それが問題になるはずです。別の変数名に割り当ててみてください。

于 2012-10-26T05:26:31.137 に答える
0

mysql_queryが 0 行を返した場合、 mysql_fetch_array()は False を返します

mysql_fetch_array()

フェッチされた行に対応する文字列の配列を返します。それ以上行がない場合は FALSE を返します。


$query = "SELECT COUNT(`id`) as 'count' FROM `$db_name`.`gallerytable` WHERE `approve` = 1 LIMIT 1;";
$result = mysql_query($query);
$numrows = mysql_num_rows($result);

if($numrows > 0){
    $result = mysql_fetch_array($result);
    ...
    ...
}
于 2012-10-26T05:20:09.393 に答える
0

mysql_query()リソースが返されない場合は、クエリが失敗したことを意味します。これは、何らかの SQL エラーが原因である可能性が最も高いです。

前後の引用符countもバックティックにする必要があります。

$query = "SELECT COUNT(`id`) as `count` FROM `$db_name`.`gallerytable` WHERE `approve` = 1 LIMIT 1;";

$resultクエリの実行後に上書きするため、コードのさらに下にあるクエリ結果セットにアクセスすることはできません。

$result = mysql_query($query);
$result = mysql_fetch_array($result); // <--- You overwrite $result here

<?php while($row = mysql_fetch_object($result)): ?>

$result最初のクエリに探しているコンテンツが実際に含まれているかどうかはわかりませんが、別のクエリはないようです。

于 2012-10-26T05:18:51.933 に答える
0

$resultの値を上書きし、次のようにコードを変更します。

$query = "SELECT COUNT(`id`) as 'count' FROM `$db_name`.`gallerytable` WHERE `approve` = 1 LIMIT 1;";
$result_query = mysql_query($query); //<--- see here I have changed $result with $result_qury
$result = mysql_fetch_array($result_query);//<--- see here I have changed $result with $result_qury

ここでこの変数$result_queryを使用します

<?php while($row = mysql_fetch_object($result_query)): ?>

これでエラーは発生しなくなります

于 2012-10-26T05:37:34.917 に答える