无法从PHP表单向多个mysql数据库表发送信息

时间:2012-08-07 11:35:23

标签: php mysql

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

2 个答案:

答案 0 :(得分:1)

有一些奇怪的事情;

  • START TRANSITION应该是START TRANSACTION
  • 您没有引用任何字符串值。需要使用' a'la INSERT INTO TEST VALUES ('olle');
  • 引用字符串
  • 只有跳过它才能指示空字段,您正在执行INSERT INTO TEST (a,b,c) VALUES (1,,2);,这不是设置b的有效语法。

另外,我建议使用比mysql_query更现代的mysql api,例如PDO or mysqli,因为将POST值注入字符串可能非常危险,可能会导致SQL注入问题

答案 1 :(得分:0)

在每个值周围使用's'和'''围绕每个值,它应该可以正常工作

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

...顺便说一下,mysql_error()是php中一个有用的函数,它返回mysql的最后一个错误信息....你可能会用它进行调试