这是一个古老的大学作业,我因为错误而没有获得全部学分,只是想知道是否有人可以帮助我解决错误,因为教练不能。
这项任务是基于等级和偏好等因素为住房创建简单的注册设置。本节应该查询数据库并存储结果,然后使用mysqli_fetch_assoc()将其存储在数组中,这就是出现错误的地方。
我收到此错误mysql_fetch_assoc()期望参数1是资源,第9行给出布尔值。我试过查看许多其他线程,看看我如何修复我的代码,但我仍然难过为什么我我收到这个错误。这是代码部分。
require_once 'sql.php';
session_start();
if (isset($_SESSION["user"])){
$result = query("SELECT * FROM users WHERE name = " . $_SESSION["user"] . ";");
while($row = mysql_fetch_assoc($result)){
$results[] = $row;
}
$_SESSION["name"] = $row["name"];
$_SESSION["isAdmin"] = $row["admin"];
}
这是出现错误的部分。
while($ row = mysql_fetch_assoc($ result)){
提示要求我们:
创建" session.php"。它将完全由PHP代码组成。从行require_once' sql.php开始&#39 ;;然后是session_start()行;在这里,我们已经将(几乎)每个页面顶部的两行代码压缩为1,因为我们只需要要求session.php&#39 ;;现在
在这些行的下方,方法是设置($ _ SESSION [" user"])和if语句来检查是否设置了用户会话变量。
如果用户已设置,则表示他们已登录。假设他们已登录,则会立即更新其余的$ _SESSION变量。
使用" SELECT * FROM users WHERE username ="查询sql数据库; 。 $ _SESSION ["用户"]。 &#34 ;;"并将结果存储在变量中。
对结果变量使用mysqli_fetch_assoc()以获取行的字段和值的关联数组,并将其存储在数组中,例如$ row。
现在,将这些$ row值存储在SESSION变量中。防爆。 $ _SESSION [" name"] = $ row [" name"]; $ _SESSION [" isAdmin"] = $ row [" admin"];
注意:使用mysqli_free_result($ result)释放结果查询的存储是一种很好的做法;
如果需要任何额外的信息或文件来帮助理解我的代码,请离开。
答案 0 :(得分:0)
您收到该错误是因为您的数据库查询失败,并且您没有为查询设置任何错误捕获。当query()失败时,它返回false(一个布尔值),它将传递给mysql_fetch_assoc(),它正在期待查询结果,但却收到了一个FALSE。如果您至少将一个或者die子句添加到查询中,那么代码将捕获失败的查询。由于MySQL查询格式不佳,我猜你的查询失败了。试试这个:
$result = mysql_query("SELECT * FROM `users` WHERE `name` = '" . $_SESSION["user"] . "'") or die("Unable to get user info");