进度栏问题

时间:2019-05-24 16:04:47

标签: php sql

我有这个进度条,说明所显示的内容是根据客户是否设置了目标奖励(通过在数据库中检查值是否为空)来确定的,但我将值设置为非空值并且总是打印出“如果为空”的情况。有人可以帮忙吗?

创建数据库时使用的代码:

  target varchar(50) DEFAULT NULL
# I put the current value to be "Bitcoin"

我的代码检查值:

$conn = new PDO($dsn, $username1, $password);
        $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stm_track = $conn->prepare("SELECT target FROM users WHERE username = :username");
        $stm_track->bindParam(":username", $username, PDO::PARAM_INT);
        $stm_track->execute();
        $row = $stm->fetch(PDO::FETCH_ASSOC);
if (is_null($row['target'])) {
        echo "<strong>Bookmark a reward and track your progress!</strong>";
} else {
        echo "<strong>Track your progress for next reward: " . $row['target'] . "</strong>";
}

1 个答案:

答案 0 :(得分:0)

您错误地声明了fetch()命令;

$row = $stm->fetch(PDO::FETCH_ASSOC);

应该是

$row = $stm_track->fetch(PDO::FETCH_ASSOC);

当您直接编写PDO类时,这些类型的错误很容易造成,我建议使用一个PDO包装器,它可以为您更自动地处理此错误。