这是一个应该在DB中搜索用户的脚本.我将此脚本分为4个文件:login.class.PHP,userLookup.PHP,userLookupdisplay.tpl.PHP和userLookup.tpl.PHP.
login.class.PHP :(这不是整个类,为了便于阅读,我把大部分课程都删掉了)
class login { public function userLookup($email = null,$first_name = null,$last_name = null) { $where = ""; $execute = ""; if(!is_null($email) && !empty($email)) { $where .= "email = :email"; $execute = array(':email' => $email); } if(!is_null($first_name) && !empty($first_name)) { $where .= "first_name = :firstName"; $execute = array(':firstName' => $first_name); } if(!is_null($last_name) && !empty($last_name)) { $where .= "last_name = :lastName"; $execute = array(':lastName' => $last_name); } if (!empty($where)) { $query =$this->_db->prepare("SELECT id,email,first_name,last_name FROM users WHERE " . $where); $query->execute($execute); return $query->fetch(PDO::FETCH_ASSOC); var_dump($query); var_dump($execute); } elseif(empty($where)) { echo "Please enter at least one search criteria"; } } }
userLookup.PHP:
session_start(); require_once('inc/config.PHP'); require_once($loginClasspath); if (!empty($_SESSION['user_id']) && $_SESSION['role'] == 2) { include('inc/dbConnect.PHP'); if ($pdo) { $loginClass = new login($pdo); $userData = null; if (isset($_POST['submit'])) { $firstName = $_POST['first_name']; $lastName = $_POST['last_name']; $email = $_POST['email']; $userData = $loginClass->userLookup($email,$firstName,$lastName); var_dump($userData); } if (!is_null($userData)) { include($userLookupdisplayTpl); } else { include($userLookupTpl); } } } else { header('Location: accessDenied.PHP'); die(); }
userLookup.tpl.PHP:
<html> <head> <title>View Users</title> </head> <body> <div style="text-align:center;"> <form method="POST" action="<?= $_SERVER['SCRIPT_NAME']; ?>"> <? var_dump($userData); ?> First Name: <input type="text" name="first_name" value=""/><br> Last Name: <input type="text" name="last_name" value=""/><br> Email: <input type="text" name="email" value=""/><br> <input type="submit" name="submit" value="Get User"/> </form> </div> </body> </html>
<html> <head> <title>View Users</title> </head> <body> <div style="text-align:center;"> <? var_dump($userData); ?> <? echo $userData['id']; ?> <? echo $userData['first_name']; ?> <? echo $userData['last_name']; ?> <p>Return</p> </div> </body> </html>
我遇到的问题是$userData(在userLookup.PHP中)保持返回布尔值false而没有任何错误.基于var_dump它看起来像查询本身正在构造正确所以我无法弄清楚它为什么返回false?任何和所有的帮助表示赞赏.先谢谢你们!另外,如果您需要更多信息,请与我们联系.
解决方法
在你的login.class.PHP中,你覆盖了你的数组$execute,你需要一些条件,如你的WHERE子句的AND或OR,将你的代码更改为:
$where = array(); $execute = array(); if(!is_null($email) && !empty($email)) { $where[] = "email = :email"; $execute[':email'] = $email; } if(!is_null($first_name) && !empty($first_name)) { $where[] = "first_name = :firstName"; $execute[':firstName'] = $first_name; } if(!is_null($last_name) && !empty($last_name)) { $where[] = "last_name = :lastName"; $execute[':lastName'] = $last_name; } if (count($where) > 0) { $where = implode(' AND ',$where); $query =$this->_db->prepare("SELECT id,last_name FROM users WHERE " . $where); $query->execute($execute); return $query->fetch(PDO::FETCH_ASSOC); var_dump($query); var_dump($execute); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。