0

私は PHP と MySQL に比較的慣れていないので、助けが必要です。

一部の PHP コード、特に mysql データベースへのフォーム データの挿入に問題があります。以下のコード サンプルは動作しますが、意図した方法ではありません。

現状では、レコードを挿入できますが、数値で 1 回だけです。これはフリートと FleetID の関係によるものだと思いますか?

$query1 = "INSERT INTO `fleet` (`FleetID`, `frgn_branchid`, `Fleet`, `Driver`) VALUES ({$_POST['fleet']}, '{$_POST['BranchID']}', '{$_POST['fleet']}', '{$_POST['driver']}')";
    $query2 = "INSERT INTO `washes` (`WashID`, `frgn_fleetid`, `frgn_branchid`, `Washer`, `Type`, `CabState`, `TrailerState`, `Description`) VALUES (NULL,{$_POST['fleet']},'{$_POST['BranchID']}', '{$_POST['washer']}', '{$_POST['type']}', '{$_POST['cabState']}','{$_POST['trailerState']}','{$_POST['description']}')";
    $query3 = "INSERT INTO `branches` (`BranchID`, `branches`) VALUES ('{$_POST['BranchID']}', ";

しかし、私はそれを複数回追加したいと思います。例: 01: テストデータ、2012 / 02: モアデータ、2013 / 01: エクストラデータ、2014

質問:「フリート」を一緒に保存せずに、フリート ID を単独でインクリメントすることはできますか? もしそうなら、どのように?

ありがとう

4

1 に答える 1

1

FleetID、WashID、BranchID を自動インクリメント ID として設定し、挿入から削除する必要があります。これにより、データベースが一意の値を設定できるようになります。

たとえば、このアプローチによる有効なテーブル定義は次のようになります。

   create table fleet (
       `FleetID` bigint not null auto_increment,
       `frgn_branchid` bigint,
       `Fleet` varchar(50) not null,
       `Driver` varchar(50) not null, 
       primary key(FleetID)
   );

次に、挿入すると

$query1 = "INSERT INTO `fleet` (`frgn_branchid`, `Fleet`, `Driver`) ".
          "VALUES ('".mysql_real_escape_string({$_POST['BranchID']})."',".                       
          "'".mysql_real_escape_string({$_POST['fleet']})."',".
          "'".mysql_real_escape_string({$_POST['driver']})."')";

このアプローチで直面する最初の問題は、挿入後に ID が何であるかがわからないことです。これには、mysql_insert_id を使用する必要があります (または mysqli または pdo と同等です)。

于 2013-07-07T05:01:25.427 に答える