【发布时间】:2017-11-26 17:22:47
【问题描述】:
在一些人的帮助下,我一直在为我的工作网站建立一个在线目录,今天我将它从开发服务器转移到生产服务器,以便其他几个人可以开始为我测试东西而且我似乎对菜单查询有疑问。我收到以下错误
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result,
boolean given in /websites/store/includes/menu.php
on line 15
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result,
boolean given in /websites/store/includes/menu.php on line 34
Warning: Invalid argument supplied for foreach()
in /websites/store/includes/menu.php on line 34
我花了一整天的时间试图弄清楚这里发生了什么,代码在开发服务器上运行良好,但在生产服务器上却抛出错误
谁能向我解释发生了什么或如何解决它
这是页面的代码
<?php
// Category Listing From Database
// Open MySql Database Connection
include ('sqlopen.php');
// SQL Query for Category Listing
$sql = mysqli_query($conn, " SELECT CategoryName, SubcategoryName, SubcategoryID
FROM Products GROUP BY SubcategoryID ORDER BY CategoryName");
// Create Array from Data
$menu = array();
while ($row = mysqli_fetch_assoc($sql)) {
// Creates First Level Array Items For Parent IDs
if (!in_array($row['CategoryName'], $menu['CategoryName'])) {
$menu['CategoryName'][] = $row['CategoryName'];
}
if (!empty($row['SubcategoryName']))
// Creates Second Level Array for Child IDs
$menu['SubcategoryName'][$row['CategoryName']][] = $row['SubcategoryName'];
// Creates Third Level Array for Category IDs
$menu['SubcategoryID'][$row['SubcategoryName']][$row['CategoryName']][] = $row['SubcategoryID'];
}
//__________________________________________________________________________________________________________
// Category Menu
?>
<ul id="storenav">
<?php
foreach ($menu['CategoryName'] as $cat) { ?>
<li><a class="sub" tabindex="1"><?php echo $cat ?></a><ul>
<?php
foreach ($menu['SubcategoryName'][$cat] as $subcat) {
foreach($menu['SubcategoryID'][$subcat][$cat] as $id) ?>
<li><a href='/store/prodlist.php?subcatid=<?php echo $id ?>'><?php echo $subcat ?></a></li>
<?php } ?>
</ul></li>
<?php } ?>
</ul>
<?php
//__________________________________________________________________________________________________________
// Open MySql Database Connection
include ('sqlclose.php');
?>
【问题讨论】:
-
您的代码不进行错误检查。你永远不能假设像 mysqli_query() 这样的函数会返回一个结果。当他们不这样做时,您的其余代码将出现您所描述的问题。以前的主机可能刚刚禁用了 display_errors。
-
好的,谢谢,错误处理是我应该做的我知道:(它可能会让事情变得更容易..所以现在我添加了一点我从数据库中得到这个错误错误代码:1055 . SELECT 列表的表达式#1 不在 GROUP BY 子句中,并且包含非聚合列 CategoryName,该列在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容