2010-08-23 110 views
0

如果我想同時向兩個表中插入一些數據,這可能嗎? 但在table2我只是插入選擇的項目,不像table1插入所有數據。 這個單獨的查詢:如何將相同的數據插入到mysql中的兩個表中

$sql = "INSERT INTO table1(model, serial, date, time, qty) VALUES ('star', '0001', '2010-08-23', '13:49:02', '10')"; 

$sql2 = "INSERT INTO table2(model, date, qty) VALUES ('star', '2010-008-23', '10')"; 

我可以在表2中插入COUNT(model)? 我發現了一些腳本,我可以使用它嗎?

$sql = "INSERT INTO table1(model, serial, date, time, qty) VALUES ('star', '0001', '2010-08-23', '13:49:02', '10')"; 
$result = mysql_query($sql,$conn); 
if(isset($model)) 
{ 
    $model = mysql_insert_id($conn); 
    $sql2 = "INSERT INTO table2(model, date, qty) VALUES ('star', '2010-008-23', '10')"; 
    $result = mysql_query($sql,$conn); 
} 
mysql_free_result($result); 
+0

爲什麼不爲表2創建查看錶?只是爲了好奇,爲什麼你需要這兩張分開的桌子? – PeterWong 2010-08-23 07:11:32

+0

我的意思是從單獨的代碼,我可以結合成爲一個命令? – klox 2010-08-23 07:18:35

回答

4

答案很簡單:沒有 - 在一個命令中沒有辦法將數據插入到兩個表中。很確定你的第二個腳本不是你想要的。

一般像這樣通過根據您的具體需要這些方法之一是亟待解決的問題:

  • 創建一個視圖來表示第二個表
  • 創建觸發器做插入到表2
  • 使用事務來確保兩個插入都成功或兩者都回滾。
  • 創建一個執行兩次插入的存儲過程。

希望這有助於

+0

使用「switch-case」命令怎麼樣? – klox 2010-08-23 07:35:43

+0

這似乎允許你做Insert1或Insert2和我以爲你需要插入1和插入2 – Elemental 2010-08-23 07:42:52

0

它不能是一個statment完成,

如果表是由InnoDB的引擎打造,可以使用transaction,以確保數據插入到2個表

+0

這有什麼更好的解決方案?填完第一張桌子後我可以填寫第二張桌子嗎? – klox 2010-08-23 07:31:27

-1

在一般情況下,這裏是你如何從一個表單POST數據到兩個表:

<?php 
$dbhost="server_name"; 
$dbuser="database_user_name"; 
$dbpass="database_password"; 
$dbname="database_name"; 

$con=mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to the database:' . mysql_error()); 

$mysql_select_db($dbname, $con); 

$sql="INSERT INTO table1 (table1id, columnA, columnB) 
     VALUES (' ', '$_POST[columnA value]','$_POST[columnB value]')"; 

mysql_query($sql); 

$lastid=mysql_insert_id(); 

$sql2=INSERT INTO table2 (table1id, table2id, columnA, columnB) 
       VALUES ($lastid, ' ', '$_POST[columnA value]','$_POST[columnB value]')"; 

//tableid1 & tableid2 are auto-incrementing primary keys 

mysql_query($sql2); 

mysql_close($con); 

?> 

//這個例子說明如何從形式到倍數表插入數據,我還沒有任何安全措施

+0

這是保存嗎?我擔心我會得到一些SQL注入。 – klox 2011-04-02 02:03:48

1

//如果要插入相同的第一臺

$qry = "INSERT INTO table (one, two, three) VALUES('$one','$two','$three')"; 

$result = @mysql_query($qry); 

$qry2 = "INSERT INTO table2 (one,two, three) VVALUES('$one','$two','$three')"; 

$result = @mysql_query($qry2); 

//或者如果要插入表中的一個

$qry = "INSERT INTO table (one, two, three) VALUES('$one','$two','$three')"; 

    $result = @mysql_query($qry); 

    $qry2 = "INSERT INTO table2 (two) VALUES('$two')"; 

    $result = @mysql_query($qry2); 

的某些部分//我知道它看起來好得是正確的,但它的工作原理,你可以不斷加入查詢只是改變

 "$qry"-number and number in @mysql_query($qry"") 
0
<?php 

if(isset($_POST['register'])) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $email = $_POST['email']; 
    $website = $_POST['website']; 
    if($username == NULL OR $password == NULL OR $email == NULL OR $website == NULL) { 
     $final_report2.= "ALERT - Please complete all fields!"; 
    } else { 
     $create_chat_user = mysql_query("INSERT INTO `chat_members` (`id` , `name` , `pass`) VALUES('' , '$username' , '$password')"); 
     $create_member = mysql_query("INSERT INTO `members` (`id`,`username`, `password`, `email`, `website`) VALUES ('','$username','$password','$email','$website')"); 
     $final_report2.="<meta http-equiv='Refresh' content='0; URL=login.php'>"; 
    } 
} 
?> 

你可以使用這樣的東西。有用。

+0

你能解釋一下爲什麼這個方法可行,而提問者的方法沒有? – ArtB 2012-11-18 16:02:32

相關問題