【问题标题】:How to fetch a string using PDO如何使用 PDO 获取字符串
【发布时间】:2015-01-08 20:24:38
【问题描述】:

我有一个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 代码工作正常,用户名和密码回显也可以。 错误似乎在函数内部,但我不知道它是什么。有人可以帮我吗?

【问题讨论】:

  • print_r($var); 你会看到的
  • ->fetch() 返回一个数组,而不是一列。您可能还想只通过用户名查询并切换到 password_hash/verify。

标签: php postgresql pdo


【解决方案1】:

这是错误的:

$var=tipo_utilizador($username, $password);

if($var=="admin")

您的函数返回一个数组,因此您需要从该数组中获取正确的元素:

if ($var['type'] === "admin")

【讨论】:

    【解决方案2】:

    fetch 方法将返回一个以字段为键的数组,而不是单个字符串。你需要这样的东西

     $var=tipo_utilizador($username, $password);
    
     if($var['type'] == "admin") {
       $some_variable = 1;
     }
    

    【讨论】:

      【解决方案3】:

      如果你这样做:

      print_r($var);
      

      你会明白为什么它不起作用!因为是数组,所以用这个:

      if ($var['type'] == "admin")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-25
        • 1970-01-01
        • 2014-09-23
        • 2012-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-13
        相关资源
        最近更新 更多