mysql_fetch_assoc()编译旧大学作业的错误

时间:2017-05-22 23:10:43

标签: java php html5 compiler-errors

这是一个古老的大学作业,我因为错误而没有获得全部学分,只是想知道是否有人可以帮助我解决错误,因为教练不能。

这项任务是基于等级和偏好等因素为住房创建简单的注册设置。本节应该查询数据库并存储结果,然后使用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)){

提示要求我们:

  1. 创建" session.php"。它将完全由PHP代码组成。从行require_once' sql.php开始&#39 ;;然后是session_start()行;在这里,我们已经将(几乎)每个页面顶部的两行代码压缩为1,因为我们只需要要求session.php&#39 ;;现在

  2. 在这些行的下方,方法是设置($ _ SESSION [" user"])和if语句来检查是否设置了用户会话变量。

  3. 如果用户已设置,则表示他们已登录。假设他们已登录,则会立即更新其余的$ _SESSION变量。

  4. 使用" SELECT * FROM users WHERE username ="查询sql数据库; 。 $ _SESSION ["用户"]。 &#34 ;;"并将结果存储在变量中。

  5. 对结果变量使用mysqli_fetch_assoc()以获取行的字段和值的关联数组,并将其存储在数组中,例如$ row。

  6. 现在,将这些$ row值存储在SESSION变量中。防爆。 $ _SESSION [" name"] = $ row [" name"]; $ _SESSION [" isAdmin"] = $ row [" admin"];

  7. 注意:使用mysqli_free_result($ result)释放结果查询的存储是一种很好的做法;

  8. 如果需要任何额外的信息或文件来帮助理解我的代码,请离开。

1 个答案:

答案 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");