一次在php中查询两个数据库

一次在php中查询两个数据库,php,mysql,Php,Mysql,每当用户提交注册表时,我一次更新两个数据库。第一个数据库很容易更新,但在第二个数据库中没有效果。下面是我的php代码 <?php $host="localhost"; $user="aru"; $password="arus"; $ur="asus"; $passord="asus"; $db="regster"; $dbn="nsltr"; $sq=mysql_connect($host,$user,$password) or die ('mysql c

每当用户提交注册表时,我一次更新两个数据库。第一个数据库很容易更新,但在第二个数据库中没有效果。下面是我的php代码

<?php
  $host="localhost";
  $user="aru";
  $password="arus";
  $ur="asus";
  $passord="asus";
  $db="regster";
  $dbn="nsltr";

  $sq=mysql_connect($host,$user,$password) or die ('mysql connecction failed'.mysql_error());

  mysql_select_db($db, $sq) or die('mysql cannot select database'.mysql_error());
  $dbh2 = mysql_pconnect($host, $ur, $passord, true) or die ('mysql connecction failed'.mysql_error());
  mysql_select_db($dbn, $dbh2) or die('mysql cannot select database'.mysql_error());

  if(isset($_POST['btnSubmit1'])){
    $fullName=htmlentities(mysql_real_escape_string($_POST['nme']));
    $emailID=htmlentities(mysql_real_escape_string($_POST['emil']));
    $bc=htmlentities(mysql_real_escape_string($_POST['bch']));
    $bn=htmlentities(mysql_real_escape_string($_POST['bnc']));
    $m=htmlentities(mysql_real_escape_string($_POST['mobe']));
    $em=htmlentities(mysql_real_escape_string($_POST['empy']));
    $a=htmlentities(mysql_real_escape_string($_POST['ofadrs']));
    $me=htmlentities(mysql_real_escape_string($_POST['msge']));
    $doj=date("Y-m-d");
    $sql="insert into rgst values('$emailID', '$fullName', '$bc', '$bn', '$m', '$em', '$a', '$me', '$doj')";
    $rndnm= uniqid();
    $log="insert into nwsletter values('$emailID', '$fullName', '$rndnm')";

    if((!(mysql_query($sql,$sq))) AND (!(mysql_query($log,$dbh2))) ){
      echo '<script language="javascript">alert("Sorry!!! it seems you are already registered");</script>';
    }
    else{
      echo '<script language="javascript">alert("Successfully registered.. Please check your mail address for password and other details");</script>';
    }
  }
?>

看起来您的两个数据库位于同一台服务器上,并且您的数据库凭据授予对这两个数据库的访问权限

在这种情况下,您可以使用相同的连接来更新两个数据库;只需在SQL中限定数据库名称

比如说,

insert 
  into regstr.rgst 
values ('$emailID', '$fullName', '$bc', '$bn', '$m', '$em', '$a', '$me', '$doj')

insert 
  into nsltr.nwsletter 
values ('$emailID', '$fullName', '$rndnm')
您甚至可以连接不同数据库中的表,只要它们位于同一服务器上,并且您的用户名可以访问这两个数据库

您应该在运行每个查询之后立即使用_num_rows()调用,以确保它实际插入了您期望的行数


我会让别人来抱怨在生产应用程序中使用过时的mysql\uAPI有多么危险。

不要使用mysql\uAPI,而是使用mysql\uAPI。下面是您使用mysqli_uuAPI的代码。希望对你有用

<?php

$host="localhost";
$user="aru";
$password="arus";
$ur="asus";
$passord="asus";
$db="regster";
$hst="localhost";
    $ur="asus";
$passord="asus";
    $dbn="nsltr";



$sq=mysqli_connect($host,$user,$password,$db);
if (mysqli_connect_errno($sq))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
        if(isset($_POST['btnSubmit1'])){
        $fullName=htmlentities(mysql_real_escape_string($_POST['nme']));
    $emailID=htmlentities(mysql_real_escape_string($_POST['emil']));
    $bc=htmlentities(mysql_real_escape_string($_POST['bch']));
    $bn=htmlentities(mysql_real_escape_string($_POST['bnc']));
    $m=htmlentities(mysql_real_escape_string($_POST['mobe']));
    $em=htmlentities(mysql_real_escape_string($_POST['empy']));
    $a=htmlentities(mysql_real_escape_string($_POST['ofadrs']));
    $me=htmlentities(mysql_real_escape_string($_POST['msge']));
    $doj=date("Y-m-d");
    $sql="insert into regster.rgst values ('$emailID', '$fullName', '$bc', '$bn', '$m', '$em', '$a', '$me', '$doj')";
    $rndnm= uniqid();

    $log="insert into nsltr.nwsletter  values ('$emailID', '$fullName', '$rndnm')";



    if((!(mysqli_query($sq,$sql)))){
        echo '<script language="javascript">alert("Sorry!!! it seems you are already registered");
        </script>';
    }
    else{
    mysqli_close($sq);
    $qq=mysqli_connect($hst,$ur,$passord,$dbn);
if (mysqli_connect_errno($qq))
{
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
    else{
    if((!(mysqli_query($qq,$log)))){
        echo "Failed to connect to MySQL: " . mysqli_error($qq);
    }
    else{
            echo '<script language="javascript">alert("Successfully registered.. Please check your mail address for password and other details");
        </script>';
        }
        }

    }
}
?>

也许
nwsletter
应该是SQL语句中的
时事通讯
?如果直接执行到数据库,而不是通过PHP脚本执行,这两个插入语句都有效吗?另外,数据库服务器是否配置为接受持久连接?一个连接到
mysql\u connect()
,另一个连接到
mysql\u pconnect()
将mysql\u pconnect()更改为mysql\u connect(),但nwsletter表中没有更改。我要删除mysql\u connect()语句非常感谢。这对我有用。我还忘记了“nwsletter”表中的一个值。再次感谢。