我有一个postgred
db,我想从表中获取一个特定的字符串值,然后执行一个条件来查看是否找到了该字符串。这是我的代码:
function tipo_utilizador($username, $password) {
global $conn;
$user = $conn->prepare("SELECT type
FROM utilizador2
WHERE name = :username AND password = :password");
$user->bindParam(':username', $username);
$user->bindParam(':password', $password);
$user->execute();
return $user->fetch();
}
然后我做了一个if条件,如:
$some_variable = 0;
$var = tipo_utilizador($username, $password);
if($var == "admin") {
$some_variable=1;
}
echo $some_variable;
但当我回显$some_variable
时,它总是返回0. SQL
代码工作正常,用户名和密码回声也可以。
错误似乎在函数内部,但我不知道它是什么。有人能帮助我吗?
答案 0 :(得分:3)
这是错误的:
$var=tipo_utilizador($username, $password);
if($var=="admin")
您的函数返回一个数组,因此您需要从该数组中获取正确的元素:
if ($var['type'] === "admin")
答案 1 :(得分:1)
fetch方法将返回一个数组,其中字段为键,而不是单个字符串。你需要这样的东西
$var=tipo_utilizador($username, $password);
if($var['type'] == "admin") {
$some_variable = 1;
}
答案 2 :(得分:1)
如果你这样做:
print_r($var);
你会明白为什么它不起作用!因为它是一个数组,所以请使用:
if ($var['type'] == "admin")