未定义变量:在PHP中
我是一个相当新的程序员,尤其是在PHP方面,因为我来自VB环境 下面是我遇到麻烦的函数,你可以看到我在评论中尝试了很多次。我想我会把评论留在那里,以防我的其他尝试更接近我 我以前从未使用过PDO,正如您所看到的,该功能几乎允许用户登录 如果$temp=$\u POST['password']这一行就是问题所在。显然$temp没有定义,但我不明白为什么,我甚至在函数的顶部声明了它。有人有什么想法吗未定义变量:在PHP中,php,variables,pdo,undefined,Php,Variables,Pdo,Undefined,我是一个相当新的程序员,尤其是在PHP方面,因为我来自VB环境 下面是我遇到麻烦的函数,你可以看到我在评论中尝试了很多次。我想我会把评论留在那里,以防我的其他尝试更接近我 我以前从未使用过PDO,正如您所看到的,该功能几乎允许用户登录 如果$temp=$\u POST['password']这一行就是问题所在。显然$temp没有定义,但我不明白为什么,我甚至在函数的顶部声明了它。有人有什么想法吗 public function load_user_data() { $temp;
public function load_user_data() {
$temp;
$sql;
try{
// $STH = dbHandler::$DBH->prepare("SELECT * FROM tblCustomer WHERE email = :email");
// $STH->bindValue(':email', $this->email);
// $STH->execute();
// $posts = $STH->fetch(PDO::FETCH_ASSOC); //If only fetch 1 line use just "fetch" instead of "fetchAll"
// echo '<pre>';
// print_r($posts);
// echo '</pre>';
//--------
$STH = dbHandler::$DBH->prepare("SELECT password FROM tblCustomer WHERE email = :email");
$STH->bindValue(':email', $_POST['usermail']);
$STH->setFetchMode(PDO::FETCH_ASSOC);
while($row = $STH->fetch()) {
$temp = $row;
}
//$temp = $STH->fetch(['password']);
// while($row = $STH->fetch()) {
// $temp = $row['password'];
// }
//--------
// $sql = "SELECT password FROM tblCustomer WHERE email = :email";
// $stmt = $PDO->query($sql);
// $row = $stmt->fetchObject();
// $temp = $row->password;
if($temp == $_POST['password']) {
$STH = dbHandler::$DBH->prepare("SELECT * FROM tblCustomer WHERE email = :email");
$STH->bindValue(':email', $this->email);
$STH->setFetchMode(PDO::FETCH_ASSOC);
echo("we have reached here");
while($row = $STH->fetch()) {
$firstname = $row['firstName'];
$lastname = $row['secondName'];
$title = $row['title'];
$companyname = $row['companyName'];
$email = $row['email'];
$phone = $row['phone'];
$email = $row['mobile'];
$startdate = $row['startDate'];
$isauthorised = $row['isAuthorised'];
$accstop = $row['accStop'];
$stopdate = $row['stopdate'];
}
}
}
catch (PDOException $e) {
print $e->getMessage();
}
}
问题在于:
$STH->execute();
首先,你需要做:
if ($temp = $STH->execute()) {
// all the code that depends on finding a row goes here
...
}
在您尝试获取行之前
其次,如果查询与任何行都不匹配,那么while循环将永远不会进入主体,因此不会设置$temp。因为您显然只希望从查询中获得一行,所以不需要使用while。相反,要:
if ($temp['password'] == $_POST['password'])
在该区块内,您需要执行以下操作:
if ($temp = $STH->execute()) {
// all the code that depends on finding a row goes here
...
}