0

4 つのテーブル (asset、asset_details、invoice、location) にデータを挿入しようとしています。フォームを送信すると、すべてのデータが正常に送信されたことが示されますが、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 を設定しないための有効な構文ではありません。

また、 PDO や mysqlimysql_queryなど、よりも最新の mysql api を使用することをお勧めします。これは、POST 値を文字列に注入することは非常に危険であり、SQL インジェクションの問題を引き起こす可能性があるためです。

于 2012-08-07T11:46:59.853 に答える
0

各属性(列)の周りに「`」を使用し、各値の周りに「」を使用すると、機能するはずです

開発中、データベースに送信される前に各クエリ式をエコーし​​ます..

...ちなみに、mysql_error() は php の便利な関数で、mysql の最新のエラー情報を返します....デバッグに使用できます。

于 2012-08-07T11:47:56.523 に答える