php - 确定 sql 语句返回 true 还是 false 的正确方法是什么?

标签 php mysql sql

所以我想做的是通过权限数据库表过滤文件夹中的应用程序,以确定当前用户是否能够访问该应用程序。在此文件的开头,我打印 session 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>";
        }
    }
}
?>

最佳答案

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

试试这个:

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

这使用单个查询来获取用户的应用程序,然后在数组中查找它们 - 操作速度明显加快。

关于php - 确定 sql 语句返回 true 还是 false 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20782278/

相关文章:

sql - 将excel导入sql db表

Java 桌面应用程序加数据库加互联网

Java POST 请求不发送变量

php - 以前我添加了颜色 : red to my code, 但是我已经删除了它,但它仍然显示在我的网站上

php - mPDF:为整页使用背景图像

python - 无法插入MySQL数据库

PHP CSS::内联工作但不是内部和外部样式表

MySQL SP 和事件被 Google Cloud SQL 自动回滚

mysql - SQL 查询以获取结果集最后一行中所有列值的总和以及行总和(分组依据)

sql - Postgres Inner Join Select 查询返回错误 : column does not exist