一次在php中查询两个数据库
每当用户提交注册表时,我一次更新两个数据库。第一个数据库很容易更新,但在第二个数据库中没有效果。下面是我的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
$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”表中的一个值。再次感谢。