2014-01-22 65 views
0

每當用戶提交註冊表單時,我一次更新兩個數據庫。第一個數據庫很容易得到更新,但在第二個數據庫中沒有效果。下面是我的PHP代碼一次在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>'; 
    } 
    } 
?> 

通過上面的代碼,我能夠更新登記數據庫但在nsltr數據庫沒有變化,也執行代碼後沒有錯誤彈出。請幫助,我是新來的PHP。在此先感謝

+0

也許'nwsletter'應該是你的SQL語句中的'nEwsletter'?如果插入語句直接執行到數據庫而不是通過PHP腳本執行,那麼這兩種插入語句都可以工作嗎? –

+0

另外,您的數據庫服務器是否配置爲接受持續連接?一個連接mysql_connect()'和另一個'mysql_pconnect()' –

+0

將mysql_pconnect()更改爲mysql_connect()nwsletter表中仍然沒有變化 – user3225075

回答

0

不使用mysql_ API,而使用mysqli_API。以下是您使用mysqli_ API的代碼。希望它能爲你工作

<?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>'; 
     } 
     } 

    } 
} 
?> 

記住,你必須通過所有值的所有字段,否則你可能會得到「列數並不在行匹配值計數1」的錯誤,這將阻止更新數據庫

+0

非常感謝。它爲我工作。我也在「nwsletter」表中忘記了一個值。再次感謝。 – user3225075

2

它看起來像你的兩個數據庫是在同一臺服務器上,它看起來像你的數據庫憑據授予訪問兩者。

在這種情況下,您可以使用相同的連接來更新兩個數據庫;只需在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_ API是多麼的危險。

+0

我應該刪除mysql_connect()語句 – user3225075