2016-05-19 183 views
0

嘿..我有点卡在PHP代码插入数据到多个SQL表。我无法在一次操作中将数据导入到两个表中。这是一个注册页面,用于创建用户登录并启动公司配置文件。任何建议将不胜感激。由于将数据从单一表格插入多个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

只是做了第二个INSERT语句中所需要的地方... –

回答

0

正如你所看到的here扩展mysql不赞成你MUST停止使用。很好的选择是PDOmysqli

您还应该使用Prepared Statements来防止SQL注入攻击的代码。

要完成使用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的()。 问候

相关问题