转换为OOP代码停止工作

时间:2013-09-14 00:33:55

标签: php

我正在尝试将我的函数文件转换为OOP文件,因为我一直在阅读它的方式。我还在学习,并且仍然对OOP中的很多事感到困惑,但我认为我会转换一些东西以帮助更​​好地理解它。我现在正试图从我的数据库中获取数据时遇到麻烦。我没有在屏幕上打印任何内容,也没有错误消息。我做错了什么?

<?php
require 'resources/library/DB.php';
error_reporting(E_ALL);
$username = "test";
class userFunctions{
    public function checkLogin($conn,$username) {
    try{
       $stmt = $conn->prepare('SELECT `password` FROM `users` WHERE `userName`= :userName');
       $stmt->bindValue(':userName', $username);
       $stmt->execute();
       $salt = $stmt->fetchColumn();

    } catch (PDOException $e){
        echo 'Connection failed: ' . $e->getMessage();
    }
       return $salt;
}

}

$a = new userFunctions;


$a->checkLogin($conn, $username);

    echo $salt;


?>

2 个答案:

答案 0 :(得分:6)

您永远不会向$salt(课外)分配任何内容。

$salt = $a->checkLogin($conn, $username);

另外,你应该至少收到通知。您回显$salt而没有为其分配任何内容。在处理代码时,您应该打开所有错误和通知:

error_reporting(-1);

将它放在脚本的顶部。

答案 1 :(得分:1)

我怀疑你的问题是一个比OOP更基本的编程概念:一个函数接受某些输入,并“返回”一些输出。该输出不会放入任何特定的命名变量中,因为函数的概念是您可以在代码的不同部分重用它,以用于不同的目的。

return $salt;行声明函数的返回是变量$salt在函数内该点的值 。但是你期望$salt也存在于函数之外。

您需要更改此行:

$a->checkLogin($conn, $username);

查看checkLogin函数返回的内容,例如:

$salt_returned = $a->checkLogin($conn, $username);
echo $salt_returned;

(如果您愿意,可以将其称为$salt,但要注意它与函数内部恰好被称为$salt的变量不同。)