我有这个进度条,说明所显示的内容是根据客户是否设置了目标奖励(通过在数据库中检查值是否为空)来确定的,但我将值设置为非空值并且总是打印出“如果为空”的情况。有人可以帮忙吗?
创建数据库时使用的代码:
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>";
}
答案 0 :(得分:0)
您错误地声明了fetch()
命令;
$row = $stm->fetch(PDO::FETCH_ASSOC);
应该是
$row = $stm_track->fetch(PDO::FETCH_ASSOC);
当您直接编写PDO类时,这些类型的错误很容易造成,我建议使用一个PDO包装器,它可以为您更自动地处理此错误。