2012-04-22 63 views
1

我有一个论坛系统,我在我的thread.php页面中使用了很多$users->permissions()。我想知道的是,如果我这样做$rights = $users->permissions()会只拨打电话做数据库得到的那个人一次的权利,而不是做这样的事情:在一个变量中只存储一个MySQL提取数组吗?

if($users->permissions() ==1) { show some mod panel } 
elseif($users->permissions == 2) { show some admin panel } 


SELECT `users`.`rights` FROM `users` LEFT JOIN `sessions` ON `sessions`.`user_id` = `users`.`id` WHERE `sessions`.`session_hash` ='".$this->con->real_escape_string($_COOKIE['session_hash'])."' 
+1

如果您不向我们展示'permissions()'的代码,我们不能说任何话! – ComFreek 2012-04-22 17:59:09

回答

1

你说得对。如果您将调用$users->permissions()的结果存储到变量(例如$rights)中,然后使用它来检查,那么它只会对数据库执行一次调用(并且加速脚本,因为它在此时检查本地数据而不是触发关闭请求到其他地方的服务器)。

但是,如果您使用您在初始问题中显示的代码,那么每次检查该值时都会执行对数据库的调用。

就个人而言,我会用一个switch结构:

$rights=$users->permissions(); 
switch ($rights) 
{ 
    case 1: 
    //Show some form 
    break; 
    case 2: 
    //Show something else 
    break; 
    default: 
    //Do something just in case it's not 1 or 2 
    break; 
} 

如果你想坚持if...else语句,仍$users->permissions()结果存储到一个变量,那么无论你说在if结构$users->permissions(),更换它与$rights

1

你是混乱的函数和变量。

与每次调用时运行的函数不同,变量不会运行任何操作。它们只包含一些价值。这就好比把钱放在口袋里。一旦你从一个店主那里得到了改变并把它放在口袋里,钱就会留在口袋里,每次你把手放进口袋时都不需要店主。

+0

我正在谈论的是将从mysql获取数据的函数的结果存储到变量中。如果我使用这个变量,它只会提供存储在变量中的数据或每次使用该变量时,是否必须调用mysql,因为该变量设置为该函数? – Steve 2012-04-22 18:10:37

+0

我的答案不够明确吗? – 2012-04-22 18:14:12

相关问题