问题是<{>>将t
和f
转换为true
和false
,因为Postgres存储true
和false
就这样。
如何在SESSION中使用变量a_moderator
?
我通过
获取变量a_moderator
的值
$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'];
}
我用它
失败了if ( $_SESSION['login']['a_moderator'] == 't' ) {
// do this
}
我还在true
的位置上运行t
等值不成功。
SESSION中的变量具有值f
,使得
Array ( [login] => Array ( [passhash_md5] => dd2f85814c35fd465c30b1472f5d3af8 [email] => nthoaeuntht@Thnatuh.comn [logged_in] => 1 [user_id] => 13 [username] => oeauoeh [a_moderator] => t ) )
答案 0 :(得分:11)
从postgre中选择布尔字段为:: int,在php中选择bool。
"SELECT a_moderator::int
FROM users
WHERE email = $1;"
$ isModerator =(bool)$ row ['a_moderator'];
答案 1 :(得分:2)
这不是这个问题的直接答案,但是这里有一个例子,证明pg _ *()函数确实将postgres布尔值返回为PHP字符串't':
[example]$ cat scratch.php
<?php
//connect to the database...
require_once 'db_connect.php';
//query
$rows = pg_fetch_all(pg_query('SELECT TRUE::bool AS true'));
//dump returned array, and test with type-safe identity comparator
var_dump($rows, $rows[0]['true'] === 't');
[example]$ php scratch.php
array(1) {
[0]=>
array(1) {
["true"]=>
string(1) "t"
}
}
bool(true)
[example]$
答案 2 :(得分:1)
我在postgres中编写了一个函数,将boolean导出为PHP可读布尔值:
你只需这样使用它:
SELECT php_bool(columna) from
table
这是功能:
CREATE OR REPLACE FUNCTION php_bool(boolean)
RETURNS numeric LANGUAGE plpgsql
AS
$BODY$
BEGIN
IF $1 = true THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END
$BODY$
答案 3 :(得分:-2)
尝试:
if ( $_SESSION['login']['a_moderator'] ) {
// do this
}
它是一个布尔值,而不是一个字符串。