Php 转换为OOP代码已停止工作

Php 转换为OOP代码已停止工作,php,Php,我正在尝试将我的函数文件转换成一个OOP文件,因为我一直在读到这是一种方式。我仍然在学习OOP中的很多东西,但我想我会转换一些东西来帮助更好地理解它。我现在在试图从数据库中获取数据时遇到了一些麻烦。我没有得到任何打印到屏幕上,也没有错误消息。我做错了什么 <?php require 'resources/library/DB.php'; error_reporting(E_ALL); $username = "test"; class userFunctions{ public f

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


?>

您从未将任何内容分配给
$salt
(课外)

另外,你至少应该得到一个通知。您回显
$salt
,但从未为其分配任何内容。处理代码时,应打开所有错误和通知:

error_reporting(-1);

将它放在脚本的顶部。

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

返回$salt
表示函数的返回值是变量
$salt
在函数内该点处的值。但是您希望
$salt
也存在于函数之外

您需要更改此行:

$a->checkLogin($conn, $username);
查看
checkLogin
函数返回的内容,例如:

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

(如果您愿意,可以将其称为
$salt
,但请注意,它与函数中碰巧被称为
$salt
的变量不同。)

非常好,非常感谢!我尝试了你关于
错误报告(-1)的建议ini\u set('display\u errors',true)也是。这应确保直接输出错误,而不是记录错误。
$salt_returned = $a->checkLogin($conn, $username);
echo $salt_returned;