2

我正在尝试将我的函数文件转换为 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;


?>
4

2 回答 2

6

你从不给$salt(课外)分配任何东西。

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

此外,您应该至少收到通知。$salt你在没有分配任何东西的情况下回应。在处理代码时,您应该打开所有错误和通知:

error_reporting(-1);

将它放在脚本的顶部。

于 2013-09-14T00:37:00.460 回答
1

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

该行return $salt;指出函数的返回是该变量$salt函数内部的那个点的值。但是您随后也期望$salt存在于函数之外。

您需要更改此行:

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

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

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

$salt(如果您愿意,可以调用它,但请注意,它$salt与函数内部调用的变量不同。)

于 2013-09-14T00:41:17.290 回答