2012-04-22 3 views
1

私はフォーラムシステムを持っていて、私は$users->permissions()を私のthread.phpページにたくさん使っています。私が知りたいのは、私が$rights = $users->permissions()ような何かを行う場合にのみ電話をかけることになるであるようなものをやってとは対照的に、その人の権利1時間を取得するために、データベースの操作を行います。あなたは、関数や変数を混乱さ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

答えて

1

あなたは正しいです。 $users->permissions()の結果を変数(例:$rights)に保存し、それを使ってチェックすると、データベースへの呼び出しが1回だけ実行されます(スクリプトを起動するのではなく、その時点でローカルデータをチェックしてスクリプトを高速化します)別の場所にあるサーバーへの要求をオフにする)。

ただし、最初の質問に表示されているコードを使用すると、値を確認するたびにデータベースが呼び出されます。あなたはif...else文に固執する場合は、if構造で$users->permissions()を言うどこでも、まだ置き換え、その後、変数に$users->permissions()の結果を格納し、

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

個人的に

、私はswitch構造を使用しますそれは$rights

1

呼び出されるたびに実行される関数とは異なり、変数は何も実行しません。彼らはある価値しか含んでいません。これはポケットにお金を入れるようなものです。店主からの変更を得てポケットに入れたら、お金はポケットの中にとどまり、手をポケットに入れるたびに店主を必要としません。

+0

私は、mysqlから変数にデータを取得する関数の結果を格納することについて話しています。この変数を使用すると、変数に格納されているデータだけを渡すか、変数を使用するたびに変数が関数に設定されているので、mysqlを呼び出す必要がありますか? – Steve

+0

私の答えがあなたにとって十分に明確ではありませんでしたか? –

関連する問題