使用PHP(PDO,MVC)将数据从数据库转换为变量

时间:2015-09-22 14:49:30

标签: php mysql model-view-controller pdo

今天我在互联网上寻找一个好的答案。我几乎从这个网站得到了答案,但该解决方案无效。

以下是我需要做的事情:

在数据库中存储了一个将用于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。我的陈述是否有问题,还是在我创建的循环中?

也许它真的很容易,但我看不出问题并找到解决方案。提前感谢您的回复!

1 个答案:

答案 0 :(得分:1)

您需要在返回前获取结果,使用fetch()fetchAll()。似乎Select()的作用类似于pdo execute()所以它返回PDOStatment,获取它以获得结果。

if($result) {
   $row = $result->fetchAll(PDO::FETCH_ASSOC);
   return $row;