因此,我想做的是通过权限数据库表过滤文件夹中的应用程序,以决定当前用户是否可以访问该应用程序的天气。在此文件的开头,我打印了会话ID以确保已设置会话ID,并返回我的ID。但是当我到达if语句时,它返回值weather,或者我的sql语句是true还是false。弄清楚sql语句返回true或false的正确方法是什么?
<?php
Print_r($_SESSION[user_id]);
$matches = glob("Apps/*.php");
if (is_array($matches)) {
foreach ($matches as $filename) {
$filenamesans = basename($filename, ".php"); // $file is set to "index"
include"db.inc.php"; //database connection
$item = "SELECT * FROM Apps WHERE UserID='$_SESSION[user_id]' AND App ='$filenamesans'";
$result = mysql_query($item);
if ($result == TRUE) {
echo "<a class='nav2' href='Apps/$filenamesans/index.php'>$filenamesans</a></br>";
}
}
}
?>
应该注意的是,您需要为循环的每次迭代建立到数据库的连接,并且在循环中进行查询通常也是一个坏主意,因为它几乎可以肯定会得到改善。
试试这个:
include("db.inc.php");
$items = mysql_query("SELECT `App` FROM `Apps` WHERE
`UserID`='".mysql_real_escape_string($_SESSION['user_id'])."'");
$itemarr = array();
while($item = mysql_fetch_assoc($items)) $itemarr[$item['App']] = true;
$files = glob("Apps/*.php");
foreach($files as $file) {
$basefile = basename($filename,".php");
if( isset($itemarr[$basefile])) {
echo "<a class='nav2' .......>...</a>";
}
}
这使用单个查询来获取用户的应用程序,然后在数组中查找它们-操作速度明显加快。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句