我试图使用一个函数从数据库返回一个简单的值,虽然这通常很容易,但我遇到了一些困难。我尝试了几种不同的混合物,但没有成功,所以我决定向这个社区寻求帮助。
其概念是数据库结构与已分配权限的页面类型进行排序。
本例的当前列:秩/ modreports / plreports
数据示例: admin /1/1
function CheckPermission($module){
$GetPerms = mysql_query("SELECT * FROM `permissions` WHERE `rank` = '".$MyDetails['group']."' LIMIT 1");
$MyPerm = mysql_fetch_array($GetPerms);
if($MyPerm[$module] != 1){
echo 'DEBUG: '.$MyPerm[$module];
//redirect("index.php?resp=perms");
die();
}
}使用示例:
CheckPermissions(modreports);上面的用法应该在这个阶段返回DEBUG: 1,或者完全不显示(最好是第二个),而是显示DEBUG:。$MyPerm‘’modreports‘将返回正确的值,因此我假设它是变量中的变量,我过去只在$_POST中使用过这个变量。
谢谢你的帮助,我希望我已经提供了足够的信息来寻求帮助。
作为对援助的回应,这是修正后的守则;
function CheckPermission($module,$group){
$GetPerms = mysql_query("SELECT * FROM `permissions` WHERE `rank` = '".$group."' LIMIT 1");
$MyPerm = mysql_fetch_array($GetPerms);
if($MyPerm[$module] != 1){
redirect("index.php?resp=perms");
die();
}
}发布于 2014-02-22 01:07:58
您的函数不知道$MyDetails或$MyPerm。它只知道您传递给它的变量(就像您对$module所做的那样),或者您声明为全局的变量(不推荐)。您在过去提到使用$_POST,这是一个“超级全局”。这些都是特例,可供所有函数使用,无需进一步定义。
推荐阅读:http://www.php.net/manual/en/language.variables.scope.php
发布于 2014-02-22 01:04:44
我认为,在你的情况下有一个错误的“不”:
而不是
if($MyPerm[$module] != 1){它应该是
if($MyPerm[$module] == 1){发布于 2014-02-22 02:05:51
将此表作为示例数据:
rank | modreports | plreports
------------------------------
admin| 1 | 1($MyPerm$module != 1)将导致False,因为'modreports‘的值为1。因此,'echo’调试:'.$MyPerm$module;‘行永远不会执行。
https://stackoverflow.com/questions/21948111
复制相似问题