2012-04-06 5 views
0

挿入クエリのフィールドの入力によって作成されるファイルの特定のファイル名を作成するのが好きです。私はそれのためのユニークなキーを持っているのが好きです。このキーはuser_idとタイムスタンプで構成され、この最後には生成されたinsert_idが挿入された挿入クエリから配置されます。 auto_increment no。を配置する必要があります。私の生成された変数の終わり。その問題は、私は、この変数のような挿入クエリの一部になるように解雇INSERTクエリの前に変数を作成することを、次のとおりです。挿入クエリの前に変数にinsert_idを取得する方法

$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."')"); 

答えて

2

実は、私が以前に書いたものを忘れています。あなたはCOUNTをあなたのために働かせることはできません。行が削除されたときに何が起こるからですか?重複した値があります。最初に行を作成し、insert_idを取得してから、先に説明した関数を使用してfile_idをUPDATEにすることをお勧めします。

$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を必ず読んでください。

0

これは悪い考えです。挿入し、LAST_INSERT_IDを使用してください。さもなければ、@AuthmanApatiraが指摘したように、間違ったIDを持つ可能性があります。このPHPはmysql_insert_id()です。

また、インデックス列がauto_incrementの場合、IDについても心配する必要はありません。 dbはあなたのためにそれを世話します。クエリを実行した後に取得することができます。

関連する問題