Php 2复选框之间的链接问题,在不应插入数据时插入数据';T

Php 2复选框之间的链接问题,在不应插入数据时插入数据';T,php,postgresql,multidimensional-array,checkbox,Php,Postgresql,Multidimensional Array,Checkbox,好吧,我有个问题。让我解释一下 我需要列出一些输入中的所有模式(复选框),然后我们可以选择要操作的模式,为特定用户提供特权 不管怎样,我得到了这个,正如你所看到的: 然后,我还需要设置一些带有特权的复选框,我做到了: 看起来是这样的: 也就是说,下面是我在UserManager.class.php中的函数更新: 公共静态函数更新(用户$newPerso){ $db=DbConnect::getDb(); $newLogin=pg_escape_字符串($newPerso->getLogi

好吧,我有个问题。让我解释一下

我需要列出一些输入中的所有模式(复选框),然后我们可以选择要操作的模式,为特定用户提供特权

不管怎样,我得到了这个,正如你所看到的:


然后,我还需要设置一些带有特权的复选框,我做到了:


看起来是这样的:

也就是说,下面是我在UserManager.class.php中的函数更新:

公共静态函数更新(用户$newPerso){
$db=DbConnect::getDb();
$newLogin=pg_escape_字符串($newPerso->getLogin());
$arraySchemas=$newPerso->getSchemas();
$arrayPrivileges=$newPerso->getPrivileges();
if(isset($arraySchemas)){
foreach($arrayPrivileges作为$schema=>$privileges){
if(isset($arrayPrivileges)){
foreach($privileges作为$privilege){
如果($privilege==“REVOKE”){
pg_查询({$privilege}所有来自{$newLogin};的模式{$SCHEMA}中的表上的所有({$privilege});
}
else if($privilege==“CREATE”){
pg_查询(“将{$SCHEMA}上的{$privilege}授予{$newLogin};”;
}
如果($privilege==“所有”| |$privilege==“插入”| |$privilege==“选择”| |$privilege==“更新”| |$privilege==“删除”){
pg_查询(“将模式{$SCHEMA}中所有表上的{$privilege}授予{$newLogin};”;
}
}
}
}
}
}
事实上,当我这样做的时候:

它可以工作,用户在“public”上有SELECT+INSERT,在“schematest”上有UPDATE+DELETE

但是,

当我这样做时:

我的用户将拥有(在该示例中):

这两个架构中的所有权限

它对“public”起作用是正常的,但是我如何才能防止“schematest”呢?

伙计们,我添加了一个“&&in_数组($schema,$arraySchemas)”

现在它似乎起作用了,让我告诉你:

公共静态函数更新(用户$newPerso){
$db=DbConnect::getDb();
$newLogin=pg_escape_字符串($newPerso->getLogin());
$arraySchemas=$newPerso->getSchemas();
$arrayPrivileges=$newPerso->getPrivileges();
if(isset($arraySchemas)){
foreach($arrayPrivileges作为$schema=>$privileges){
如果(isset($arrayPrivileges)&&in_数组($schema,$arraySchemas)){/**Well-guys,我添加一个“&&in_数组($schema,$arraySchemas)”

现在它似乎起作用了,让我告诉你:

公共静态函数更新(用户$newPerso){
$db=DbConnect::getDb();
$newLogin=pg_escape_字符串($newPerso->getLogin());
$arraySchemas=$newPerso->getSchemas();
$arrayPrivileges=$newPerso->getPrivileges();
if(isset($arraySchemas)){
foreach($arrayPrivileges作为$schema=>$privileges){

if(isset($arrayPrivileges)和&in_数组($schema,$arraySchemas)){/****不传递数组并循环它?查看我的编辑器可能问题不在查询中,而是在输出中?如何检查用户是否具有所有权限?直接在pg Admin 4上…不传递数组并循环它?查看我的编辑器可能问题不在查询中,而是在输出中?如何检查用户是否具有所有权限?直接在pg Admin上4.