-2

重複の可能性:
警告: mysql_fetch_array() は、パラメーター 1 がリソースであると想定しています。

詳細表示ページで、次のように URL バーで正しい ID を取得します。

http://localhost/attractions/details.php?ID=1

ページのタイトルとサイドバーが読み込まれますが、レコードの詳細が必要なスペースに次のエラー メッセージが表示されます。

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/attractions/details.php on line 41

これは「details.php」ページのコードです (不要な html は削除されています):

<?php
include 'page-start.php';
$myQuery  = "SELECT Attraction.*, Type.TypeName ";
$myQuery .= "FROM Attraction ";
$myQuery .= "INNER JOIN Type ON Attraction.Type = Type.TypeID";
$myQuery .= "WHERE AttractionID=" . $_GET['ID'];
$result = mysql_query($myQuery);
if (!result) {
    die('Query error: ' . mysql_error());
} 
?>

<body>
<div class="container">
        <h2>List of Attractions</h2>

        <?php
            //display attractions row by row
            while($row = mysql_fetch_array($result))
            {
                echo '<div class="attraction">';
                echo '<h4><a href="details.php?ID=' . $row['AttractionID'] . '">' . $row['Name'] . '</a></h4>';
                echo '<div class="featureimage">';
                echo '<img src="'. $row['ImageUrl'] . '" />';
                echo '</div>';
                echo '<p>' . $row['TypeName'] . '</p>';
                echo '<h5>' . $row['Summary'] . '</h5>';
                echo '</div>';  
            }
        ?>
</div><!-- container -->
</body>
</html>
<?php
include 'page-end.php';
?>

41 行目は次の行です。

while($row = mysql_fetch_array($result))

ここで非常に単純なことを見落としていることはわかっていますが、困惑しており、エラーの原因を本当に理解できません。誰かが私の状況に少し光を当てることができます.SOで同様の質問を検索しましたが、私を助けることができる人は誰もいませんでした!

4

4 に答える 4

2

キーワードEGであるテーブル名を使用する場合、Join コード用に、MySQL で必要なバッククォートが欠落しているType | TYPE | TyPE...

$myQuery  = "SELECT `Attraction`.*, `Type`.`TypeName` ";
$myQuery .= "FROM `Attraction` ";
$myQuery .= "INNER JOIN `Type` ON `Attraction`.`Type` = `Type`.`TypeID`";
$myQuery .= "WHERE `AttractionID` =" . $_GET['ID'];

Jeffreyが言ったように、クエリが無効な場合はfalseを返します

于 2012-11-20T18:24:38.270 に答える
2

mysql_query()ブール値を返す場合があることに注意してください。mysql_query()その結果を結果の型として使用する前に、機能したかどうか (そうでない場合は false を返す)を確認する必要があります。

あなたの場合、クエリは明らかに失敗し、として使用できない false を返しましたresource。あなたは一緒に行くべきです

if (!$result) { /* we have a database error */ }
于 2012-11-20T18:24:39.187 に答える
0

この部分を見てif (!result) {ください$。それ自体でエラーが発生するはずです。通知が表示されていない可能性があります。とにかく、あなたの SQL は false を返していますが、私が言及したエラーのためにそれをキャッチしていません。そのエラーを修正し、SQL を確認してください。

于 2012-11-20T18:25:10.403 に答える
0

mysql_query が単に失敗し、変数 $result に FALSE (ブール値) の値を与え、mysql_fetch_array() がその BOOLEAN で窒息している場合に考えられる説明です。クエリが機能することを確認します。$ が欠落しているため、クエリエラー条件をトリガーしていませんif (!result) {

また、mysql_ 関数ではなく PDO または MYSQLI を使用することをお勧めします。(それらは (予定されています -- マーティンに感謝します) 非推奨です。 )

于 2012-11-20T18:29:55.290 に答える