[英]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此特定情况下, userlevel
的id
你将检索0或1行,因此我们可以使用if
检查匹配的行。
有关更多详细信息,请参见mysql_query的文档 。
您正在将mysql资源与整数进行比较,因此可以预期到奇怪的结果。 使用mysql_result()从此资源中获取一个单元格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.