0

我正在尝试将数据插入 4 个表(资产、资产详细信息、发票和位置)。当我提交表单时,它告诉我所有数据都已成功提交,但是当我检查 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);
?>
4

2 回答 2

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 或 mysqli,因为将 POST 值注入字符串可能非常危险,可能会导致 SQL 注入问题。

于 2012-08-07T11:46:59.853 回答
0

在每个属性(列)周围使用'`'并在每个值周围使用''',它应该可以工作

在开发过程中,我会在将每个查询表达式发送到数据库之前对其进行回显。

...顺便说一句,mysql_error()是php中一个有用的函数,它返回mysql的最后一个错误信息...。你可以用它来调试

于 2012-08-07T11:47:56.523 回答