2012-08-07 88 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