找出sql语句是返回true还是false的正确方法是什么?

时间:2013-12-26 09:24:02

标签: php mysql sql

所以我要做的是通过权限数据库表来过滤我在文件夹中的应用程序,以决定当前用户是否能够访问该应用程序。在这个文件的开头我打印会话ID以确保它的设置并返回我的id。但当我到达我的if语句时,它返回一个值天气或不是我的sql语句是真还是假。找出天气的正确方法是什么,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>";
        }
    }
}
?>

1 个答案:

答案 0 :(得分:0)

应该注意的是,您正在为循环的每次迭代建立与数据库的连接,而且在循环中进行查询通常也是一个坏主意,因为它几乎可以肯定地得到改进。 / p>

试试这个:

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

这使用单个查询来获取用户的应用程序,然后在阵列中查找它们 - 这是一个明显更快的操作。