今天我在互联网上寻找一个好的答案。我几乎从这个网站得到了答案,但该解决方案无效。
以下是我需要做的事情:
在数据库中存储了一个将用于qr代码的令牌。在硬编码时我已经做了一些生成qr代码的东西:
$token_qr = "a86ad6352e939eea67da45b8731c3a8d62dcas1r";
$url_qr = some url;
$qr_code = array(
"token" => $token_qr,
"url" => $url_qr
); // end array
$qr_code_encoded = json_encode($qr_code, JSON_UNESCAPED_SLASHES);
$smarty->assign('qr_code_encoded', base64_encode($qr_code_encoded));
将base64字符串放在url中,以便生成qr图像。
现在我需要动态地创建它,url总是相同但令牌总是不同的。在所有数据库语句都存在的模型中,我做了这个:
Class Webservices {
public function GetToken($token) {
$pdo = Database::Get();
$query = "SELECT `site__webservice`.* FROM `site__webservice` WHERE `token` = :token"; // SQL select statement
$params = array(":token" => $token); // bind params
$result = $pdo->Select($query, $params); // run query
// fetch token
if($result) {
$row = PDO::FETCH_ASSOC($result);
return $row[$token];
} else {
return false;
}
}
}
使用此函数,我尝试从数据库中获取令牌并将其存储在控制器中的$ token_qr变量中。要打电话给我,我用这个:
$webservices = new Webservices();
$token_qr = $webservices->GetToken($token);
此函数的输出现在始终为false。我的陈述是否有问题,还是在我创建的循环中?
也许它真的很容易,但我看不出问题并找到解决方案。提前感谢您的回复!
答案 0 :(得分:1)
您需要在返回前获取结果,使用fetch()
或fetchAll()
。似乎Select()
的作用类似于pdo execute()
所以它返回PDOStatment,获取它以获得结果。
if($result) {
$row = $result->fetchAll(PDO::FETCH_ASSOC);
return $row;