2013-03-31 98 views
0

我需要从数据库中的表'groups'中获取'groupLeader'字段,并将其存储在一个变量中,然后与当前登录的用户名进行比较,但是I得到的错误:从MySQL数据库中选择一个字段用于比较变量

Warning: mysql_numrows() expects parameter 1 to be resource, object given in /home/content/00/7923300/html/uber/tasks.php on line 31

我目前拥有的代码是这样的:

$sq = "SELECT * FROM groups WHERE groupID='".$groupID."'"; 
$result=$db->query($sq); 
$num=mysql_numrows($result); 
$i=0; 
while ($i < $num) { 
    $gLeader= mysql_result($result, $i, 'groupLeader'); 
    $i++; 
} 
if($_COOKIE['$username'] == $gLeader) { 
    echo "User is leader."; 
} 

原谅我,如果这似乎是一个相当简单的请求。我是新来的PHP和数据库工作。

编辑:忘了线31提的是,包含

$num=mysql_numrows($result); 
+0

“mysql_numrows()期望参数1是资源”表示$结果没有填充结果集,这意味着您的查询不像您期望的那样工作。尝试打印查询并直接运行它。另外,你应该转向mysqli方法。 –

回答

0

您可能需要使用PHP的的mysql_query或你的框架行号的方法来使用的线路。

$result = mysql_query($sq); 

或许

$db->number_of_rows($sq); 
0

是,不是未知原因正常执行的查询问题就在这里。这就是为什么它返回错误$result,这实际上不是资源。

使用:

$sq = "SELECT * FROM groups WHERE groupID='".$groupID."'"; 
$result = mysqli_query($connection, $sq); 

$result = mysql_query($sq); 
0

该代码的绝大部分是多余的和没有意义的。如果你想要的只是一行中的单个字段,那么不要做SELECT *,并且不要使用循环。

$sql = "SELECT groupLeader FROM ..." 
$result = mysql_query($sql) or die(mysql_error()); 
if (mysql_num_rows($result) > 0) { 
    $row = mysql_fetch_assoc($reuslt); 
    if ($row['groupLeader'] == $_COOKIE['username']) { 
     ... 
    } 
} 

但是,请注意,mysql _ *()函数复合体在PHP中已正式弃用,不应再使用。考虑切换到mysqli,而这通常是嵌入式兼容的,或者更好的是使用PDO。

相关问题