-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))

我只知道我会在这里忽略一些如此简单的事情,但是我很困惑,我真的无法弄清楚是什么导致了错误,请有人能对我的情况有所了解,我已经搜索过类似的问题,但是没有人可以帮助我!

4

4 回答 4

2

当您使用作为关键字EG的表名时,对于连接代码,您在 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 返回错误,但由于我提到的错误,您没有发现它。因此,修复该错误并检查您的 SQL。

于 2012-11-20T18:25:10.403 回答
0

如果您的 mysql_query 只是失败了,可能的解释是给变量 $result 一个 FALSE 值(这是一个布尔值),然后 mysql_fetch_array() 在那个 BOOLEAN 上窒息。验证您的查询是否有效。您没有触发查询错误条件,因为您缺少 $ onif (!result) {

此外,最佳实践是使用 PDO 或 MYSQLI 而不是 mysql_ 函数。(他们(将要 - 感谢马丁)已弃用。

于 2012-11-20T18:29:55.290 回答