0

挿入クエリからのフィールドの入力によって作成されるファイルの特定のファイル名を作成するのが好きです。そのための一意のキーが必要です。このキーは、user_id、タイムスタンプで構成され、この最後に、実行された挿入クエリから生成されたinsert_idを配置する必要があります。auto_incrementnoを配置する必要があります。生成された変数の終わりに。したがって、問題は、挿入クエリが実行される前に変数を作成して、この変数が次のような挿入クエリの一部になるようにすることです。

$get_num = $db->query("SELECT COUNT (*) FROM tableA");  
$num = $query->fetch_assoc();
$end = $num + 1;

$file_id = $id .".". time() .".". $end;

$insert = $db->query("INSERT INTO tableA ( file_id, a, b, c) VALUES('".$file_id."','".$a."','".$b."','".c."')");
4

2 に答える 2

2

実際、私が以前に書いたことを忘れてください。COUNT行が削除されるとどうなるので、あなたはあなたのために働くことを期待することはできませんか?値が重複します。最善の策は、最初に行を作成し、insert_idを取得してから、UPDATE前に説明した関数を使用してfile_idを取得することです。

$uid = uniqid();
$insert = $db->query("INSERT INTO tableA ( file_id, a, b, c) VALUES('".$uid."','".$a."','".$b."','".c."')");

$file_id = $id .".". time() .".". mysql_insert_id();
$db->query("UPDATE tableA SET file_id='{$file_id}' WHERE file_id='{$uid}' LIMIT 1;");

結局、とにかく2つのクエリを使用する必要があるため、これ以上のリソースは必要ありません。さらに、あなたはCOUNTもう操作をしていません。

他のニュースでは、a、b、c変数がどこから来ているかに応じて、SQLiを必ず読んでください。

于 2012-04-06T17:53:43.670 に答える
0

これは悪い考えです。挿入を行ってから、 LAST_INSERT_IDを使用します。そうしないと、@ AuthmanApatiraが指摘したように、IDが間違っている可能性があります。このためのPHPはmysql_insert_id()です。

また、インデックス列がauto_incrementの場合、IDについて心配する必要さえないことに注意してください。dbが自動的に処理します。クエリの実行後に取得できます。

于 2012-04-06T17:58:59.387 に答える