亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 PostgreSQL ARRAY、array_to_json()

使用 PostgreSQL ARRAY、array_to_json()

PHP
慕碼人2483693 2022-01-24 10:16:36
讓我解釋一下我的問題。我管理一個應用程序,該應用程序允許為用戶賦予角色并讓他們使用數據庫訪問不同的模式PostgreSQL。我想查看每個用戶的詳細信息,所以我的意思是我想查看所有模式+角色。所以我做了一個函數getList(),它返回登錄名+密碼+角色+模式。這是功能:public static function getList(){    $db = DbConnect::getDb();    $q = pg_query("SELECT    u.usesysid as idUser, u.usename as login,    u.passwd as password,    ARRAY(SELECT b.rolname FROM pg_catalog.pg_auth_members m JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid) WHERE m.member = r.oid) as roles,    ARRAY(SELECT nspname FROM pg_namespace pn WHERE pg_catalog.has_schema_privilege(r.rolname, nspname, 'USAGE')= true AND nspname <> 'information_schema' AND nspname !~~ 'pg_%') as schemas    FROM pg_catalog.pg_roles r JOIN pg_catalog.pg_user u on(r.rolname=u.usename)    WHERE usename !~ 'postgres' ORDER BY 1;");    if ($data = pg_fetch_assoc($q)) {        do {            $users[] = new User($data);        } while ($data = pg_fetch_assoc($q));        return $users;    } else {        return null;    }}但是,(據我所知),我需要在我的查詢中放置 aarray_to_json()或json_build_array()類似的東西,因為查詢中的數組 ( PostgreSQL) 返回 PHP 中的字符串而不是數組。如你看到的 :  8 =>     object(User)[9]      private '_idUser' => string '24733' (length=5)      private '_login' => string 'efefhhh' (length=7)      private '_password' => string '********' (length=8)      private '_roles' => string '{role1,role2}' (length=13)      private '_schemas' => string '{schematest,public,schematest2}' (length=31)所以我真的需要一個PHP數組來使下面的代碼工作:$list = UserManager::getList();foreach ($list as $elt) {    echo '<p>' . $elt->getLogin() . '</p>';    echo '<p>' . $elt->getPassword() . '</p>';    $roles=$elt->getRoles();    //$roles=json_decode($roles); //Will be useful if I put a array_to_json() in the query of getList ?    if(isset($roles) && !empty($roles)){        echo '<p>Membership of :</p>';        echo '<ul>';        foreach ($roles as $role) {            echo '<li>'.$role.'</li>';        }        echo '</ul>';    }}但我真的不知道我可以在哪里放置任何array_to_json()或json_build_array()其他任何東西......有人可以幫助我嗎?
查看完整描述

1 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

我不必在 json 中編碼。&我沒有修改我的功能UserManager::getList();。


我來給你展示 :


$list = UserManager::getList();


foreach ($list as $elt) {

    echo '<p>' . $elt->getLogin() . '</p>';

    echo '<p>' . $elt->getPassword() . '</p>';


    $roles=$elt->getRoles();

    if(isset($roles) && !empty($roles) && $roles!=="{}"){

        $roles = trim($roles, "{}");

        $roles = explode (",", $roles);

        echo '<p>Membership of :</p>';

        echo '<ul>';

        foreach ($roles as $role) {

            echo '<li>'.$role.'</li>';

        }

        echo '</ul>';

    }


    $schemas=$elt->getSchemas();

    if(isset($schemas) && !empty($schemas) && $schemas!=="{}"){

        $schemas = trim($schemas, "{}");

        $schemas = explode (",", $schemas);  

        echo '<p>Use schemas :</p>';

        echo '<ul>';

        foreach ($schemas as $schema) {

            echo '<li>'.$schema.'</li>';

        }

        echo '</ul>';

    }


}


查看完整回答
反對 回復 2022-01-24
  • 1 回答
  • 0 關注
  • 638 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號