-1

スクリプトの1つに問題があります。基本的に何が起こるかというと、私の使用とmysqli_data_seek()mysqli_fetch_assoc()のエラーが発生します。

Warning: mysqli_data_seek() expects parameter 1 to be mysqli_result, boolean given in /usr/home/myacc/includes/html/shop/categoryMain.html.php on line 49
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /usr/home/myacc/includes/html/shop/categoryMain.html.php on line 50 

これは、これらの2行に関連するコードです。

mysqli_data_seek($subsSql, 0);
while($rowSubs = mysqli_fetch_assoc($subsSql))

これらのエラーは、ホストされている(ライブ)Webサイトでスクリプトが実行されている場合にのみ発生します。私のローカル開発(最新バージョンのWAMP)では、このスクリプトはエラーなしで実行され、目的の効果を生み出します...

完全なコンテキストでのスクリプトは次のとおりです。

//categories to local array
$catsQuery = "
    SELECT id, category, catDirPath
    FROM categories
    ORDER BY category
";
$catsSql = mysqli_query($link, $catsQuery);
$cats = array();
mysqli_data_seek($catsSql, 0);
while($rowCats = mysqli_fetch_assoc($catsSql))
{
    $cats[$rowCats['id']]['catName'] = $rowCats['category'];
    $cats[$rowCats['id']]['catPath'] = $rowCats['catDirPath'];
}

// subCats to local array
$subsQuery = "
    SELECT id, subCat, category_id, subDirPath
    FROM subCats, sub_categories
    WHERE subCats.id = sub_categories.sub_id
    ORDER BY subCat
";
$subsSql = mysqli_query($link, $subsQuery);
$subs = array();
mysqli_data_seek($subsSql, 0);
while($rowSubs = mysqli_fetch_assoc($subsSql))
{
    $subs[$rowSubs['id']]['subName'] = $rowSubs['subCat'];
    $subs[$rowSubs['id']]['catId'] = $rowSubs['category_id'];
    $subs[$rowSubs['id']]['subPath'] = $rowSubs['subDirPath'];
}

// loop through categories and if subs exist, add to resultset and display
foreach ($cats as $catId => $cat)
{
    ...
            foreach ($subs as $subId => $sub)
            {
                ...
            }
    ...
}

誰かがこのスクリプトのコーディング方法に問題を見つけたり、Webホストで使用されているApacheサーバーではなくwampを介してこれが機能する理由を示唆したりする可能性がありますか?

これに関する提案やアドバイスをいただければ幸いです。

これを読んでくれてありがとう!

4

2 に答える 2

1

mysqli_queryのドキュメントには、

失敗すると FALSE を返します。SELECT、SHOW、DESCRIBE、または EXPLAIN クエリが成功した場合、mysqli_query() は mysqli_result オブジェクトを返します。その他の成功したクエリの場合、mysqli_query() は TRUE を返します。

これは、クエリが失敗したことを意味します。$linkが正常に接続されていることを確認し、 $subsQuery$catsSqlの構文を再確認してください。

于 2012-06-05T22:22:59.043 に答える
0

subCatstable: への参照が正しくないことがわかりました。このテーブルの実際の名前は ですsubcats。ローカル バージョンでは大文字と小文字が区別されないようですが、ホストされたバージョンでは大文字と小文字が区別されます。

誰かがこの背後にある理由を私に説明できれば、答えはそれです!

ありがとう!

于 2012-06-05T22:34:56.917 に答える