2012-08-07 79 views
0

我試圖將數據插入到4個表(資產,asset_details,發票和位置)中。當我提交表單時,它告訴我所有的數據都已成功提交,但是當我檢查MySQL數據庫時,信息僅提交給位置表。無法將信息從PHP表格發送到多個mysql數據庫表

任何幫助將不勝感激,謝謝。

mysql_query("START TRANSITION"); 

    $query1 =("INSERT INTO .asset (asset_tag, asset_number, cap_ex, asset_type_id, invoice_id, status) 
     Values(".$_POST['asset_tag'] .",,,".$_POST['asset_type'] . ",".$_POST['invoice_number']."," . $_POST['status_id'] .")"); 

    $query2 =("INSERT INTO .asset_details (asset_type_id, asset_tag, asset_type, physical_asset_id, manufacturer, os, os_version, make, model, serial_number, processor, ram, memory, hdd, host_name, notes) 
     Values(" .",".$_POST['asset_tag']."," .$_POST['asset_type'].",, 
     ,".$_POST['os'].",".$_POST['os_version'].",".$_POST['make'].",".$_POST['model'].",".$_POST['serial_number'].",".$_POST['processor'].",,".$_POST['memory'].",".$_POST['hdd'].",,".$_POST['notes'].")"); 

    $query3 =("INSERT INTO .invoice (invoice_number, invoice_date, purchas_price, quantity, order_date, vender, warrenty_end, notes) 
     Values(" .$_POST['invoice_number'].",". $_POST['invoice_date'].",". $_POST['purchase_price'].",,,". $_POST['vender'].")"); 

    $query4 =("INSERT INTO .location (location_name, rack, row, unit) 
     Values(" .$_POST['location_name'].",".$_POST['rack'].",".$_POST['row'].",".$_POST['unit'].")"); 

    echo "$query1 $query2 $query3 $query4"; 


    $result1= mysql_query($query1); 
    $result2= mysql_query($query2); 
    $result3= mysql_query($query3); 
    $result4= mysql_query($query4); 

    $result = mysql_query("COMMIT");  

if (!$result) 
{ 
    mysql_query("ROLLBACK"); 
    die('Invalid query: ' . mysql_error()); 
} 
else 
{ 
    echo "<script>alert('SUCCESS!');</script>"; 
} 
} 


mysql_close($con); 
?> 
+0

大約有你的字符串值暫無報價! echo $ query ...產生什麼? – Waygood 2012-08-07 11:40:22

+0

你是怎麼想到mysql_query(「START TRANSITION」);'...... – Vatev 2012-08-07 11:40:36

+0

不應該是'mysql_query(「START TRANSACTION」);'? – Tomer 2012-08-07 11:45:53

回答

1

有一些奇怪的事情;

  • START TRANSITION應該可能是START TRANSACTION
  • 您並未引用任何字符串值。字符串需要使用' a'la INSERT INTO TEST VALUES ('olle');
  • 空字段不能通過跳過它來指示,你正在做INSERT INTO TEST (a,b,c) VALUES (1,,2);這是不是有效的語法不設置b。

另外,我建議您使用更現代的mysql的API比mysql_query,例如PDO or mysqli,由於注入POST值成一個字符串,你可以做的是相當危險的,你可能會導致SQL注入問題。

+0

對不起,但我是mySQL和PHP的新手,我不確定第三點的正確語法。 「一個空字段不能通過跳過它來表示,你正在執行INSERT INTO TEST(a,b,c)VALUES(1,,2);這對於不設置b是無效的語法。」 – 2012-08-07 23:06:39

+0

請給我看一個例子。預先感謝您 – 2012-08-07 23:07:19

0

用''的圍繞每個屬性(列)和「」」圍繞每個值,它應該工作

在開發過程中,我會一唱一和查詢表達式,然後發送到數據庫..

...順便說一下,mysql_error()是在PHP有用的功能,它返回的MySQL的最後一個錯誤信息.... U可以利用它來進行調試

+0

好的非常感謝您 – 2012-08-07 23:05:00

相關問題