Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用PDO将1个表单连接到2个Mysql数据库_Php_Mysql_Pdo_Multiple Databases - Fatal编程技术网

Php 使用PDO将1个表单连接到2个Mysql数据库

Php 使用PDO将1个表单连接到2个Mysql数据库,php,mysql,pdo,multiple-databases,Php,Mysql,Pdo,Multiple Databases,这是我第一次来这里,我有一个问题,我正在做一个登记表,但我需要插入到2个数据库这里是我的代码 当我在一个数据库中运行它的唯一寄存器时,有时是db1,有时是db2 -对不起,我英语不好 -下面是register.php require_once 'config/dbconfig.php'; if($user->is_loggedin()!="") { $user->redirect('home.php'); } if(isset($_POST['btn-signup']))

这是我第一次来这里,我有一个问题,我正在做一个登记表,但我需要插入到2个数据库这里是我的代码

当我在一个数据库中运行它的唯一寄存器时,有时是db1,有时是db2

-对不起,我英语不好

-下面是register.php

require_once 'config/dbconfig.php';

if($user->is_loggedin()!="")
{
    $user->redirect('home.php');
}

if(isset($_POST['btn-signup']))
{
   $uname = trim($_POST['txt_uname']);
   $umail = trim($_POST['txt_umail']);
   $upass = trim($_POST['txt_upass']); 
   $rpass = trim($_POST['txt_rpass']);  
   if($uname=="") {
      $error[] = "provide username !"; 
   }
   else if($umail=="") {
      $error[] = "provide email id !"; 
   }
   else if(!filter_var($umail, FILTER_VALIDATE_EMAIL)) {
      $error[] = 'Please enter a valid email address !';
   }
   else if($upass=="") {
      $error[] = "provide password !";
   }
   else if(strlen($upass) < 6){
      $error[] = "Password must be atleast 6 characters"; 
   }

   elseif($upass != $rpass){
         $msg = "passwords doesn't match";
    }
   else
   {
      try
   {
         $stmt = $DB_con->prepare("SELECT user_name,user_email FROM users                                WHERE user_name=:uname OR user_email=:umail");
         $stmt2 = $DB_con2->prepare("SELECT user_name,user_email FROM users     WHERE user_name=:uname OR user_email=:umail");
         $stmt->execute(array(':uname'=>$uname, ':umail'=>$umail));
         $stmt2->execute(array(':uname'=>$uname, ':umail'=>$umail));
     $row=$stmt->fetch(PDO::FETCH_ASSOC);

     if($row['user_name']==$uname) {
        $error[] = "sorry username already taken !";
     }
     else if($row['user_email']==$umail) {
        $error[] = "sorry email id already taken !";
     }
     else
     {
        if($user->register($fname,$lname,$uname,$umail,$upass)) 
        {
            $user->redirect('register.php?joined');
        }
     }
 }
 catch(PDOException $e)
 {
    echo $e->getMessage();
     }
  } 
}
require_once'config/dbconfig.php';
如果($user->is_loggedin()!=“”)
{
$user->redirect('home.php');
}
如果(isset($_POST['btn-signup']))
{
$uname=trim($_POST['txt_uname']);
$umail=trim($_POST['txt_umail']);
$upass=修剪($_POST['txt_upass']);
$rpass=修剪($_POST['txt_rpass']);
如果($uname==“”){
$error[]=“提供用户名!”;
}
else if($umail==“”){
$error[]=“提供电子邮件id!”;
}
如果(!filter_var($umail,filter_VALIDATE_EMAIL))存在其他情况{
$error[]=“请输入有效的电子邮件地址!”;
}
else if($upass==“”){
$error[]=“提供密码!”;
}
否则如果(strlen($upass)<6){
$error[]=“密码必须至少包含6个字符”;
}
elseif($upass!=$rpass){
$msg=“密码不匹配”;
}
其他的
{
尝试
{
$stmt=$DB\u con->prepare(“从user\u name=:uname或user\u email=:umail的用户中选择user\u name、user\u email”);
$stmt2=$DB\u con2->prepare(“从user\u name=:uname或user\u email=:umail的用户中选择user\u name、user\u email”);
$stmt->execute(数组(':uname'=>$uname,':umail'=>$umail));
$stmt2->execute(数组(':uname'=>$uname,':umail'=>$umail));
$row=$stmt->fetch(PDO::fetch_ASSOC);
如果($row['user_name']==$uname){
$error[]=“对不起,用户名已被占用!”;
}
else if($row['user\u email']==$umail){
$error[]=“抱歉,电子邮件id已被占用!”;
}
其他的
{
如果($user->register($fname、$lname、$uname、$umail、$upass))
{
$user->redirect('register.php?joined');
}
}
}
捕获(PDO$e)
{
echo$e->getMessage();
}
} 
}
-这里是Class.User.php

  <?php
  class USER
  {
private $db;

function __construct($DB_con)
{
  $this->db = $DB_con;
}

public function register($fname,$lname,$uname,$umail,$upass)
{
   try
   {
       $new_password = password_hash($upass, PASSWORD_DEFAULT);

       $stmt = $this->db->prepare("INSERT INTO users(user_name,user_email,user_pass) 
                                                   VALUES(:uname, :umail, :upass)");

       $stmt->bindparam(":uname", $uname);
       $stmt->bindparam(":umail", $umail);
       $stmt->bindparam(":upass", $new_password);            
       $stmt->execute(); 

       return $stmt; 
   }
   catch(PDOException $e)
   {
       echo $e->getMessage();
   }    
}

public function login($uname,$umail,$upass)
{
   try
   {
      $stmt = $this->db->prepare("SELECT * FROM users WHERE user_name=:uname OR user_email=:umail LIMIT 1");
      $stmt->execute(array(':uname'=>$uname, ':umail'=>$umail));
      $userRow=$stmt->fetch(PDO::FETCH_ASSOC);
      if($stmt->rowCount() > 0)
      {
         if(password_verify($upass, $userRow['user_pass']))
             {
            $_SESSION['user_session'] = $userRow['user_id'];
            return true;
         }
         else
         {
            return false;
         }
      }
   }
   catch(PDOException $e)
   {
       echo $e->getMessage();
   }
   }

   public function is_loggedin()
     {
                if(isset($_SESSION['user_session']))
        {
           return true;
        }
     }

         public function redirect($url)
     {
         header("Location: $url");
     }

         public function logout()
        {
          session_destroy();
         unset($_SESSION['user_session']);
    return true;
     }
    }
  ?>

-以及DBConfig.php

 <?php
 session_start();

 $DB_host = "localhost";
 $DB_user = "root";
 $DB_pass = "";

 try
 {
      $DB_con = new PDO("mysql:host=     {$DB_host};dbname=dblogin",$DB_user,$DB_pass);
 $DB_con2 = new PDO("mysql:host=     {$DB_host};dbname=dblogin2",$DB_user,$DB_pass);
      $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $DB_con2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 }
 catch(PDOException $e)
 {
 echo $e->getMessage();
 }


 include_once 'class.user.php';
 $user = new USER($DB_con);
 $user2 = new USER($DB_con2);

使用事务。这将确保要么两次插入都成功,要么两次插入都不成功。更多信息:您必须将
$user->register()方法中的代码添加到您的帖子中,这样我们就可以从您的
Class.user.php
文件中看到那里发生了什么,您只在第一个数据库上的
$user
对象的
注册方法
中插入数据,而根本没有在第二个数据库上注册用户。然后在
DBConfig.php
文件的末尾有一行:
$user2=newuser2($DB_-con2)
,我想知道您是否有一个名为
USER2
的类!这一行是否产生任何错误??不应该是这样的:
$user2=新用户($DB\u con2)