当前位置: 首页 > 知识库问答 >
问题:

使用pdo php创建的注册页面出现错误

黎曾笑
2023-03-14

我正在学习oops概念在PHP。我使用PHP PDO创建了登录/注册/dbconfig页面。DBconfig.php工作良好,但注册页面给出以下错误。

致命错误:未捕获错误:调用D:\xampp\htdocs\phpoops\signup中未定义的方法dBase::prepare()。php:26堆栈跟踪:#0 D:\xampp\htdocs\phpoops\signup。php(20):注册-

我以过程的方式创建了相同的代码,它工作得很好。我怎样才能解决这个问题?

这是我的密码:

我ndex.php

<?php  
    require("dbconfig.php");
    $db = new dBase();
    if(isset($_POST['submit'])){
    require_once("signup.php");
    $reg = new signUp($db);
    $reg->register();
   }
?>

<form action="" method="post">          
      <div class="top-row">
        <div class="field-wrap">
          <label>
            First Name<span class="req">*</span>
          </label>
          <input type="text" name="ufname" required autocomplete="off" />
        </div>        
        <div class="field-wrap">
          <label>
            Last Name<span class="req">*</span>
          </label>
          <input type="text" name="ulname" required autocomplete="off"/>
        </div>
      </div>
      <div class="field-wrap">
        <label>
          Email Address<span class="req">*</span>
        </label>
        <input type="email" name="uemail" required autocomplete="off"/>
      </div>          
      <div class="field-wrap">
        <label>
          Set A Password<span class="req">*</span>
        </label>
        <input type="password" name="upass" required autocomplete="off"/>
      </div>          
      <button type="submit" name="submit" class="button button-block"/>Get Started</button>          
      </form>

dbconfig。php

<?php 
class dBase
{
protected $uname;
protected $upass;
protected $host;
protected $dbname;
private   $dbcon;

function __construct()
{
     $this->dbcon  = false;
     $this->dbname = "oopsdb";
     $this->uname  = "root";
     $this->upass  = "";
     $this->host   = "localhost";
     //$this->connect();
     if(!$this->dbcon){
        try{
            $this->dbcon = new PDO('mysql:host='.$this->host.';dbname='.$this->dbname.'',$this->uname,$this->upass);
            $this->dbcon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }
        catch(PDOException $e){
            echo $e->getMessage();
            die();
        }
    }
    return $this->dbcon;    
 }  
}

报名。php

<?php 
   class signUp
  {
   private $fname;
    private $lname;
   private $email;
   private $pass;
    private $db;
   function __construct($db)
   {    
    $this->fname = htmlspecialchars($_POST['ufname']);
    $this->lname = htmlspecialchars($_POST['ulname']);
    $this->email = htmlspecialchars($_POST['uemail']);  
    $this->pass = htmlspecialchars($_POST['upass']);
    $this->db = $db;
    $this->register();
}

function register(){        
    if($_SERVER["REQUEST_METHOD"] == "POST"){
    $sql = "INSERT INTO user(`fname`,`lname`,`email`,`pass`,`usr_update`) VALUES (:fname,:lname,:email,:pass,NOW())";
    $stmt = $this->db->prepare($sql);
    $stmt->bindParam(':fname',$this->fname);
    $stmt->bindParam(':lname',$this->lname);
    $stmt->bindParam(':email',$this->email);
    $stmt->bindParam(':pass',$this->pass);
    $stmt->execute();
    if($stmt == true){
        echo "<script>alert('Successfully Inserted');</script>";
    }else{
        echo "<script>alert('Not Inserted...please check logic once');</script>"; 
    }   

    }
  }
}

共有1个答案

舒俊雄
2023-03-14

我正在学习php中的oops概念。

那很好
然而,OOP并不代表创建尽可能多的类。创建一个新类,前提是您知道它应该用于什么
目前,dBase类没有做任何香草PDO做不到的事情。因此,只需使用PDO即可。

dbconfig。php

 <?php

 $dbname = "oopsdb";
 $uname  = "root";
 $upass  = "";
 $host   = "localhost";
 $charset = "utf8";

 $db = new PDO("mysql:host=$host;dbname=$dbname;charset=$charset",$uname,$upass);
 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

然后删除$db=newdbase() 并保持其余内容不变

 类似资料:
  • 页面 Page Page(Object) Page(Object) 函数用来注册一个页面。接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。 Object 参数说明: 属性 类型 描述 data Object 页面的初始数据 onLoad Function 生命周期回调—页面加载时触发 onShow Function 生命周期回调—监听页面显示, onReady

  • 本文向大家介绍Android实现带头像的用户注册页面,包括了Android实现带头像的用户注册页面的使用技巧和注意事项,需要的朋友参考一下 1.首先是注册页面的布局: 效果如下图所示: 2.然后是图库的页面布局,由用户去选择图片,这里我就用windows系统里面的几张照片: 3.然后我们在注册页面的Activity写入以下代码: 点击按钮跳转到图库Activity页面中: 重写 4.在图库Acti

  • 安装企业微信移动客户端后,可先在手机上创建企业,先行体验企业微信的便捷高效。 手机创建企业 1 / 创建流程 01/05选择微信登录。 02/05进行登录授权。 03/05输入管理员的手机号码及企业邮箱帐号。 04/05填写公司名称及管理员真实姓名。 05/05创建成功,开始体验企业微信。 2 / 移动端补充营业执照 若想体验功能更完整的企业微信,建议在手机上认领企业,补充营业执照。认领后可获得1

  • 新鲜的操作系统,新鲜与2015,我所做的就是创建具有个人身份验证的新mvc项目,一旦我尝试注册它,它就会给我那个错误(我什么都不编辑,我什么都不删除) '/'应用程序中的服务器错误。 系统找不到指定的文件 描述:在执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。 异常详细信息:系统。组件模型。Win32异常:系统找不到指定的文件 源错误: 第1

  • Java . lang . illegalstateexception:在org . spring framework . web . servlet . support . bind status .(bind status . Java:153)~[spring-web MVC-5 . 3 . 13 . jar:5 . 3 . 13]在org . spring framework . web

  • 请查看以下代码: 结果是这样的: http://localhost:5000/Account/Register?userId=614d16ae-4e95-4796-8d67-cb829e12585b 登记册从哪里来?为什么不是帐户/确认邮件?我确实在Account controller的Register方法中创建了这个,所以我想Register来自那里,但为什么它会使用它,而不是我传入的?我确实看