从MySQL结果中获取数组时出错

时间:2012-11-20 18:18:52

标签: php mysql

  

可能重复:
  Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in

在我的详细视图页面上,并在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 个答案:

答案 0 :(得分:2)

使用关键字的表名 E.G Type | TYPE | TyPE...

时,

您在MySQL中需要的反对代码

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

并且正如Jeffrey所说,如果查询无效,它将返回false

答案 1 :(得分:2)

请注意mysql_query()可能会返回布尔值。在将结果用作结果类型之前,您需要检查mysql_query()工作与否(如果不是,则返回false)。

在您的情况下,查询显然失败并返回false,不能用作resource。 你应该去

if (!$result) { /* we have a database error */ }

答案 2 :(得分:0)

请看这一部分:if (!result) {您错过了$。这应该会产生一个错误,也许你没有显示通知。无论如何,你的SQL返回false,但由于我提到的错误,你没有抓住它。因此,修复该错误并检查您的SQL。

答案 3 :(得分:0)

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

另外,最好使用PDO或MYSQLI而不是mysql_函数。 (They're (going to be--thanks Martin) deprecated.