Php 转换为OOP代码已停止工作
我正在尝试将我的函数文件转换成一个OOP文件,因为我一直在读到这是一种方式。我仍然在学习OOP中的很多东西,但我想我会转换一些东西来帮助更好地理解它。我现在在试图从数据库中获取数据时遇到了一些麻烦。我没有得到任何打印到屏幕上,也没有错误消息。我做错了什么Php 转换为OOP代码已停止工作,php,Php,我正在尝试将我的函数文件转换成一个OOP文件,因为我一直在读到这是一种方式。我仍然在学习OOP中的很多东西,但我想我会转换一些东西来帮助更好地理解它。我现在在试图从数据库中获取数据时遇到了一些麻烦。我没有得到任何打印到屏幕上,也没有错误消息。我做错了什么 <?php require 'resources/library/DB.php'; error_reporting(E_ALL); $username = "test"; class userFunctions{ public f
<?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)的建议我故意再次破坏了代码,但仍然没有收到任何错误或通知。它应该打印到屏幕上,对吗?或者它存储在我必须查看的日志文件中?@Yamaha32088 Tryini\u set('display\u errors',true)代码>也是。这应确保直接输出错误,而不是记录错误。
$salt_returned = $a->checkLogin($conn, $username);
echo $salt_returned;