如何从PHP中的数据库查询返回数值?

时间:2010-06-07 16:13:22

标签: php mysql

我希望从数据库中检索一个数值

function adminLevel()
{
   $q = "SELECT userlevel FROM ".TBL_USERS." WHERE id = '$_SESSION[id]'";
   return mysql_query($q, $this->connection);
}

这是SQL。

然后我写了下面的php / html:

    <?php 
    $q = $database->adminLevel();
    if ($q > 7)
    {
        ?>
        <a href="newleague.php">Create a new league</a>
        <?
    }
    ?>

我遇到的问题是返回的userlevel不影响if语句。它始终显示。我怎样才能测试userlevel的值大于7?

由于

4 个答案:

答案 0 :(得分:2)

mysql_query返回一个资源。您需要使用一些mysql_fetch_ *函数从该资源获取数据,例如mysql_fetch_row http://php.net/mysql_fetch_row

答案 1 :(得分:1)

adminlevel()此处不返回整数。它返回一个包含单行和单列的mysql结果集对象;包含在内的数据点恰好是整数。据推测,然而,PHP将该对象与整数相比较,因为它大于7,但它并不是比较你想要比较的整数。试试这个:

function adminLevel()
{
   $q = "SELECT userlevel FROM ".TBL_USERS." WHERE id = '$_SESSION[id]'";
   $r = mysql_query($q, $this->connection);
   if ( $r and mysql_num_rows($r) ) {
       $s = mysql_fetch_assoc($r);
       return $s['userlevel'];
   } else {
       // error handling; your query failed or returned no rows
   }
}

答案 2 :(得分:1)

mysql_query返回资源。然后,您需要从中获取结果。 e.g。

function adminLevel()
{
  $q = "SELECT userlevel FROM ".TBL_USERS." WHERE id = '$_SESSION[id]'";
  $result = mysql_query($q, $this->connection);
  if ($row = mysql_fetch_assoc($result)) {
    $level = $row['userlevel'];
  } else {
    $level = 0; // some default value
  }

  // free the result resource after using it
  mysql_free_result($result);
  return $level;
}

如果您考虑一下,在一般情况下,查询可以返回多个结果,因此您需要一种方法来依次检索每个结果(例如while上的mysql_fetch_assoc循环)但在此在您userlevel id选择if的具体情况下,您将检索0或1行,以便我们可以使用{{1}}来检查匹配的行。

有关详细信息,请参阅documentation for mysql_query

答案 3 :(得分:0)

您正在将mysql资源与整数进行比较,因此您可能会遇到奇怪的结果。使用mysql_result()从该资源中获取一个单元格。