2014-02-05 73 views
0

我一直在這個小時裏撓了撓頭;新來的PHP,請親切。將PHP表格連接到兩個表中的鏈接

我試過多種連接方法和一些工作有的沒有,但我想在一次從一個單一的形式保存到兩個表,但第二個表具有第一表的主鍵作爲外鍵。

對於原因,我無法找到,它只是不想要工作,並顯示第二個錯誤消息(失敗)。任何幫助將大大接近。

HTML片段 - 除非您是使用BULK INSERT忽略了垃圾HTML

<form action="savedata.php" method="POST" > 

             <div class="form-group"> 
              <label>Full Company Name</label> 
              <input class="form-control" name="company_name" placeholder="For example - Aviva UK Zone PLC"> 
             </div> 

             <div class="form-group"> 
              <label>Company URL(s)</label> 
              <textarea class="form-control" rows="3" name="company_url" placeholder="Place a new domain on each line without http or www."></textarea> 
             </div> 
             <hr> 
             <div class="form-group"> 
              <label>POC Name</label> 
              <input class="form-control" name="company_poc_name"placeholder="Point of contact name"> 
             </div> 
             <div class="form-group"> 
              <label>POC Telephone</label> 
              <input class="form-control" name="company_poc_telephone" placeholder="Point of contact telephone"> 
             </div> 
             <div class="form-group"> 
              <label>POC Email</label> 
              <input class="form-control" name="company_poc_email" placeholder="Point of contact email"> 
             </div> 
         </div> 
        </div> 
       </div> 

        <div class="panel panel-info"> 
         <div class="panel-heading"> 
          New User Information 
         </div> 
         <div class="panel-body"> 
          <p>This user will be hard-paired with the company above; the user will not be emailed until you complete a dataset to the company.</p> <div class="form-group"> 
              <label>Full User Name</label> 
              <input class="form-control" name="user_name" placeholder="Full User Name i.e. Joe Blogs"> 
             </div> 
             <div class="form-group"> 
              <label>Temp Password</label> 
              <input class="form-control" name="user_password" placeholder="User Work Email Address"> 
             </div> 
             <div class="form-group"> 
              <label>User Email</label> 
              <input class="form-control" name="user_email" placeholder="User Work Email Address"> 
             </div> 

         </div> 
        </div> 

        <div class="panel panel-danger"> 
         <div class="panel-heading"> 
          Complete New Company + User 
         </div> 
         <div class="panel-body"> 
          <p>The company and user will be created, you must then add a data set to pair with the company you have just created.</p> <div class="form-group"> 
              <input type="submit" class="btn btn-default btn-lg btn-block" value="Save new Company"></input> 

          </form>   

PHP

<?php mysql_connect("localhost","user","password"); 
mysql_select_db("corporat_account"); 


$order = "INSERT INTO corp_companies (company_name, company_url, company_poc_name, company_poc_telephone, company_poc_email) 
VALUES ('$_POST[company_name]','$_POST[company_url]','$_POST[company_poc_name]','$_POST[company_poc_telephone]','$_POST[company_poc_email]') 
INSERT INTO corp_users (comp_id, user_name, user_password, user_email) 
VALUES ('1','$_POST[user_name]','$_POST[user_password]','$_POST[user_email]')"; 

$result = mysql_query($order); 
if($result){ 
    echo("<br>Input data is succeed"); 
} else{ 
    echo("<br>Input data is fail"); 
} 

?> 
+0

你不想使用MySQL的** _ ***爲您查詢了。這是貶值。檢查MySQLi或PDO。另外,您不應該像用戶那樣直接將用戶數據放入查詢中。您需要使用[real_escape_string](http://uk3.php.net/mysqli_real_escape_string)或使用[prepared statements](http://php.net/manual/en/mysqli.prepare.php)將其轉義防止SQL注入。 – Styphon

回答

0

如果不使用「;」則不能使用執行2個查詢分開他們。但是讓我們把它分成php,因爲我們需要先用它來獲取comp_id。我們將使用mysql_insert_id()這使我們能夠獲得最後插入表的生成的ID:

$order = "INSERT INTO corp_companies (company_name, company_url, company_poc_name, company_poc_telephone, company_poc_email) 
VALUES ('$_POST[company_name]','$_POST[company_url]','$_POST[company_poc_name]','$_POST[company_poc_telephone]','$_POST[company_poc_email]')"; 

$result = mysql_query($order); 
$comp_id = mysql_insert_id(); 
$usersql = "INSERT INTO corp_users (comp_id, user_name, user_password, user_email) 
VALUES ('$comp_id','$_POST[user_name]','$_POST[user_password]','$_POST[user_email]')"; 
$result2 = mysql_query($usersql); 

if($result && $result2){ 
    echo("<br>Input data is succeed"); 
} else{ 
    echo("<br>Input data is fail"); 
} 
+0

謝謝你的Volkan;現在我不斷收到此錯誤 - [05月2014年17點36分04秒UTC] PHP的警告:mysql_insert_id():拒絕訪問用戶 '根' @ 'localhost' 的(使用密碼:NO)在/ home/CORPORAT /的public_html/pushdata.php上線13 [05月2014年17點36分04秒UTC] PHP的警告:mysql_insert_id():到服務器的連接無法在/ home/CORPORAT /的public_html/pushdata成立。 php on line 13 我在連接的細節中也加了另外兩行,但不知道如何工作這個 $ result = mysqli_query($ con,$ order); $ comp_id = mysql_insert_id(); - 線13? – user3276011

+0

如果你正在使用mysqli,你應該使用mysqli_insert_id($ con) –

+0

謝謝你!救了我24小時的頭痛 - 給你的業力:) – user3276011

-2

,你的MySQL查詢將無法正常工作,你希望它的方式。

你只需要重用你的$ order語句,使其一分爲二。

$order = "INSERT INTO corp_companies (company_name, company_url, company_poc_name, company_poc_telephone, company_poc_email) VALUES ('$_POST[company_name]','$_POST[company_url]','$_POST[company_poc_name]','$_POST[company_poc_telephone]','$_POST[company_poc_email]')"; 
$result = mysql_query($order); 
if($result) { 
    // we are ok to complete the next step 
    $order = "INSERT INTO corp_users (comp_id, user_name, user_password, user_email) VALUES ('1','$_POST[user_name]','$_POST[user_password]','$_POST[user_email]')"; 
    $result = mysql_query($order); 
    // We can check result here too if you want 
} 

因此,如果不使用批量插入,您不能同時運行這兩個插入,您需要將它們分開。您可以使用相同的連接。

+0

如果你想從第一個表的鍵,你將需要查詢該表爲自己剛纔插入到拿到鑰匙 –

+0

沒有,查詢表最後插入的ID會產生問題,因爲其他客戶也可能是在該表上執行插入。只需在我的答案中解釋mysql_insert_id()即可。 –