简体   繁体   English

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

[英]Can not send information from PHP form to multiple mysql database tables

I am trying to insert data into 4 tables ( asset, asset_details, invoice and location). 我正在尝试将数据插入4个表(资产,资产详细信息,发票和位置)。 When I submit the form, it tells me that all the data has been submitted successfully but when I check the MySQL database the information is only submitted to the location tables. 当我提交表单时,它告诉我所有数据都已成功提交,但是当我检查MySQL数据库时,信息仅提交到位置表。

Any help will be appreciated, Thank you . 任何帮助将不胜感激,谢谢。

    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);
?>

There are some strange things; 有一些奇怪的事情。

  • START TRANSITION should probably be START TRANSACTION . START TRANSITION可能应该是START TRANSACTION
  • You're not quoting any of your string values. 您没有引用任何字符串值。 Strings need to be quoted using ' a'la INSERT INTO TEST VALUES ('olle'); 字符串需要使用' a'la INSERT INTO TEST VALUES ('olle');引号INSERT INTO TEST VALUES ('olle');
  • An empty field cannot be indicated by just skipping it, you're doing INSERT INTO TEST (a,b,c) VALUES (1,,2); 只是跳过就不能表示一个空字段,您正在执行INSERT INTO TEST (a,b,c) VALUES (1,,2); which is not valid syntax for not setting b. 对于没有设置b的语法无效。

Also, I recommend using a more modern mysql api than mysql_query , as for example PDO or mysqli , since injecting POST values into a string as you do can be pretty dangerous, you may cause SQL injection problems. 另外,我建议使用比mysql_query更为现代的mysql api,例如PDO或mysqli ,因为将POST值注入字符串中可能非常危险,可能会导致SQL注入问题。

Use '`'s around each attributes(columns) and ''' around each values, it should work 在每个属性(列)周围使用“`”,在每个值周围使用“''

During development, I'd echo each query-expressions before it is sent to the database.. 在开发过程中,我会在将每个查询表达式发送到数据库之前回显它们。

...by the way, mysql_error() is a useful function in php, which returns the last error information of mysql....U may use that for debugging ...顺便说一下,mysql_error()是php中的一个有用函数,它返回mysql的最后错误信息。...U可以将其用于调试

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM