【问题标题】:need assistance for database input数据库输入需要帮助
【发布时间】:2013-12-11 15:51:37
【问题描述】:

嘿,我做了一个 pdo 注册表系统 - 但我使用了三个类 - 但我没有让它将电子邮件/密码插入注册表 - 它只是进入一个空白屏幕,没有输入。

以下是以下 3 个类的代码:

connect.php

<?php
class Connect{
  public function dbConnex(){
    return new PDO("mysql:host=localhost; dbname=demodatabase", "root","password");
  }
}
?>

Header.php

<?php
include_once('Connect.php');
class Header{
  public $odb;

  public function __construct(){
    $this->odb = new Connect();
    $this->odb = $this->db->dbConnex();
  }

  public function Register($first_name, $last_name, $email_id, $password){
    if(isset($_POST['first_name'])){
      $first_name = $_POST['first_name'];
      $last_name = $_POST['last_name'];
      $email_id = $_POST['email_id'];
      $password = $_POST['password'];
      $q = "INSERT INTO demoregi(first_name, last_name, email_id, password) VALUES(:first_name, :last_name, :email_id, :password);";
      $query = $odb->prepare($q);
      $results =    $query->execute(array(
            ":first_name" => $first_name,
            ":last_name" => $last_name,
            ":email_id" => $email_id,
            ":password" => $password
      ));
    }
  } 
}   
?>

Index.php

<?php
include_once('Header.php');
if(isset($_POST['submit'])){
    $first_name= $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $email_id = $_POST['email_id'];
    $password = $_POST['password'];
    $object = new Header();
    $object -> Register($first_name, $last_name,$email_id,$password);
}
?>

<html>
<head>
</head>
<body>
    <form method="post" action="header.php">
        <br>First Name: <input type="text" id="first_name" name="first_name"/></br>
        <br>Last Name: <input type="text" id= "last_name" name="last_name"/></br>
        <br>Email: <input type="text" id="email_id" name="email_id"/></br>
        <br>Password: <input type="password" id= "password" name="password"/></br>
        <input type="submit" name="submit" value="Register"/>
    </form>
</body>
</html>

那么如何让它将数据输入数据库呢?我没有收到任何错误消息 - 只是注册按钮将我重定向到的空白屏幕。

问题的简单解决方案。想要一些帮助!谢谢一百万!!!

【问题讨论】:

  • 你需要使用`$query = $this->odb->prepare($q);`,否则你的数据库句柄超出范围。

标签: php mysql database pdo


【解决方案1】:

我看到很多大错误。

第一。在你的 index.php 中你正在做:

$first_name= $_POST['first_name'];
$last_name = $_POST['last_name'];
$email_id = $_POST['email_id'];
$password = $_POST['password'];

$object = new Header();
$object -> Register($first_name, $last_name,$email_id,$password);

然后你重新做一遍:

 public function Register($first_name, $last_name, $email_id, $password){
     if(isset($_POST['first_name'])){

     first_name = $_POST['first_name'];
     $last_name = $_POST['last_name'];
     $email_id = $_POST['email_id'];
     $password = $_POST['password'];
     // other stuff

你不应该在你的函数中依赖 $_POST 或 $_GET 1.已经在参数中询问您需要什么。 2. 对你的职能部门的真正需要撒谎。永远不要依赖超级全局来完成你的功能。

其次,我建议您使用PDO::bindParam 来绑定您的值。

那么,你应该做的是告诉我们你得到了什么错误!它可能是从错误的列名到简单的错字。要做到这一点:

var_dump($odb->errorInfo());

【讨论】:

    【解决方案2】:

    有几点需要指出。

    1. 当您提交表单的代码位于 index.php 上时,您的表单会将您的页面重定向到 header.php(我认为这是这里的主要问题。那么您可能会遇到错误)
    2. 在您的类标题中。函数 Register 有 $first_name, $last_name, $email_id, $password 传递给它们,那么当它被传递给类时,为什么要使用 $_POST['first_name'] 重置 $first_name 的值

    【讨论】:

    • try and catch 与抛出异常无关,请注意
    • @YourCommonSense 但是,如果您为此标记我,那么也许您应该在另一个帖子中,因为他们也使用过 $odb->e​​rrorInfo()
    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 2023-03-24
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多