2016-05-19 8 views
0

ちょっと..私は、複数のSQLテーブルにデータを挿入するために少し詰まっています。私は単一のアクション内で両方のテーブルにデータを取得できません。これは、ユーザーログインと会社プロフィールの開始を登録するための登録ページです。どんな提案も大歓迎です。あなたはこのような2つの挿入を行うことができますおかげ複数のSQLテーブルに単一の書式でデータを挿入する

<?php 
session_start(); 
if(isset($_SESSION['user'])!="") 
{ 
    header("Location: home.php"); 
} 
include_once 'resources/php/dbconnect.php'; 




if(isset($_POST['btn-signup'])) 
{ 
    $uname = mysql_real_escape_string($_POST['uname']); 
    $email = mysql_real_escape_string($_POST['email']); 
    $upass = md5(mysql_real_escape_string($_POST['pass'])); 
    $orgname = mysql_real_escape_string($_POST['orgname']); 

    $uname = trim($uname); 
    $email = trim($email); 
    $upass = trim($upass); 
    $orgname = trim($orgname); 

    // email exist or not 
    $query = "SELECT user_email FROM users WHERE user_email='$email'"; 
    $result = mysql_query($query); 

    $count = mysql_num_rows($result); // if email not found then register 

    if($count == 0){ 

     if(mysql_query("START TRANSACTION; 
     INSERT INTO users('user_name','user_email','user_pass') 
      VALUES('$uname','$email','$upass'); 
     INSERT INTO companies('name','owner_id') 
      VALUES('$orgname','$email'); 
     END;")) 
     { 
      ?> 
      <script>alert('Registration Successful');</script> 
      <?php 
     } 
     else 
     { 
      ?> 
      <script>alert('error while registering you...');</script> 
      <?php 
     }  
    } 
    else{ 
      ?> 
      <script>alert('Sorry Email ID already taken ...');</script> 
      <?php 
    } 

} 

?> 
+0

だけで、必要な場所で2番目のINSERT文を実行します... –

答えて

0

あなたはheremysql拡張子が廃止され、あなた使用を中止しなければならない見ることができるように。大きな代替案はPDOmysqli

また、SQL注入攻撃からコードを保護するために使用する必要があります。Prepared Statementsあなたがこれを行うことができPDOを使用してトランザクションを完了するために

$conn->query("START TRANSACTION"); 
$stmt = $conn->prepare("INSERT INTO users(user_name,user_email,user_pass) VALUES(?,?,?)"); 
try 
{ 
    $stmt->bindValue(1,$user_name); 
    $stmt->bindValue(1, $user_email); 
    $stmt->bindValue(3, $user_pass); 
    $stmt->execute(); 
    $secondStmt = $conn->prepare("INSERT INTO companies(name,owner_id) VALUES(?,?)"); 
    $secondStmt->bindValue(1, $name); 
    $secondStmt->bindValue(2, $owner_id); 
    $secondStmt->execute(); 
    $conn->query("COMMIT"); //This commits all changes if no error occured 
} 
catch(Exception $e) 
{ 
    $conn->query("ROLLBACK"); //This reverts any changes made in case of an error 
} 
0

:また

$queryUsers = INSERT INTO users('user_name','user_email','user_pass') 
      VALUES('$uname','$email','$upass'); 
mysql_query($queryUsers); 
$queryCompanies = INSERT INTO companies('name','owner_id') 
      VALUES('$orgname','$email'); 
mysql_query($queryCompanies); 

は、慎重にするmysql_queryで、)(mysqliのを使用しようと、廃止されました。 よろしく

関連する問題