可能重复:
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))
我只知道我会在这里忽略一些如此简单的东西,但是我很难过,我真的无法弄清楚导致错误的是什么,请一些人对我的情况有所了解,我搜索过类似的东西问题,但没有一个可以帮助我!
答案 0 :(得分:2)
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.)