我正在尝试将我的函数文件转换为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;
?>
答案 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
的变量不同。)