通过PHP从Postgres正确读取布尔值

Léo*_* 준영 8 php postgresql

这个线程的主要问题是移到这里关于PHP/Postgres中的boolean数据类型.

的问题是转换tftruefalse,因为Postgres的存储truefalse本身.


如何a_moderator在SESSION中使用变量?

我取变量的值a_moderator

我获取变量的#1代码

    $result = pg_prepare($dbconn, "moderator_check_query", 
        "SELECT a_moderator 
        FROM users
        WHERE email = $1;"
    );
    $a_moderator = pg_execute($dbconn, "moderator_check_query", array($_SESSION['login']['email']));

    $rows = pg_fetch_all ( $a_moderator );

    foreach ( $rows as $row ) {
       $_SESSION['login']['a_moderator'] = $row['a_moderator'];
    } 
Run Code Online (Sandbox Code Playgroud)

我使用它失败了

#2代码我如何使用变量失败

if ( $_SESSION['login']['a_moderator'] == 't' ) {
   // do this
}
Run Code Online (Sandbox Code Playgroud)

我也没有成功地运行诸如true代替的价值t.在会话中变量的值为f使得

#3输出告诉我varibale的值

Array ( [login] => Array ( 
   [passhash_md5] => dd2f85814c35fd465c30b1472f5d3af8 
   [email] => nthoaeuntht@Thnatuh.comn 
   [logged_in] => 1 [user_id] => 13 
   [username] => oeauoeh 
   [a_moderator] => t ) 
)
Run Code Online (Sandbox Code Playgroud)

小智 12

从postgre中选择布尔字段为:: int,并在php中转换为bool.

 "SELECT a_moderator::int 
        FROM users
        WHERE email = $1;"
Run Code Online (Sandbox Code Playgroud)

$ isModerator =(bool)$ row ['a_moderator'];

  • 或者,您可以跳过postgres中的强制转换,并在PHP中进行转换:`$ isModerator =($ row ['a_moderator'] ==='t');` (3认同)