繁体   English   中英

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

[英]How do I return the numeric value from a database query in PHP?

我正在寻找从数据库检索数值

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>
        <?
    }
    ?>

我的问题是返回的用户级别不会影响if语句。 它总是显示。 我如何测试用户级别的值大于7?

谢谢

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

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
   }
}

mysql_query返回资源。 然后,您需要从中获取结果。 例如

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 ),但因为你是selecing此特定情况下, userlevelid你将检索0或1行,因此我们可以使用if检查匹配的行。

有关更多详细信息,请参见mysql_query文档

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM