2012-04-06 7 views
0

他の変数を組み込む変数を作成しようとしています。select countはカウントされません

これは、後で挿入クエリが実行される自動インクリメントフィールドの番号になります。

私が使用してみました:

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

ように私は私がちょうど数えることができると思った理由です

$end = $db->insert_id; 

を使用することはできません前に、私はすべての更新/挿入クエリを持っていませんauto_increment行の番号と私の新しい変数を構築するために必要な最後の変数があります。

なぜなら、なぜこのようなことが起こるのか分かりません。

私に間違っていることを教えてくれる人がいれば、本当に感謝しています。どうもありがとう。目標は何を知っているのが好きなすべての人のために

UPDATE

私は、後のフィールドの入力によって作成されるファイルに対して特定の名前またはIDを作成したいです挿入クエリから取得します。私はユニークなキーを持っているのが好きです。このキーは、user_idとタイムスタンプで構成されています。この生成された変数の最後に、auto_increment nrを配置する必要があります。テーブルに配置されるクエリの名前。

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

希望今、私が近づくことが好きなものを明確になりますので、問題は、この変数のようなINSERTクエリの一部となるように、INSERTクエリが起こる前に、私は、変数を作成すること、です。

+0

なぜあなたはあなたの挿入を行い、それの後にinsert_idをチェックできませんか?行が挿入される前に、実際に行のIDを知る必要がありますか? –

+0

私は2回存在することができない変数を生成するのが好きで、私が探しているこの変数はinsert-queryの要素でなければなりません。その新しい変数の他の変数はtime()または特定のIDによって生成されます。私自身のために、この新しい変数の出力で、$ id- $ unix-timestamp- $ auto_increment_nrのようないくつかのキーを見るのが好きです。その理由のために私はそれを持っているのが好きです。私は最初に自分自身を保存して、挿入を生成し、その後に更新を行いたいと思います。 – bonny

+0

申し訳ありませんが、あなたが達成しようとしていることを理解できません。それが何であれ、ホイールを再発明しないでください。 MySQLで自動インクリメントIDが必要な場合は、AUTO INCREMENTを使用してください。 PHPで必要な場合は、http://uk.phpのようなものを使用します。net/uniqidしかし、これはあなたのアプリの中ではあなたの要求の中で一意ではありません。 – liquorvicar

答えて

3

は、あなたがMySQLで自動インクリメント列が必要な場合は、あなたがAUTO_INCREMENTを使用する必要があります

SELECT COUNT(*) FROM table1 
3

を試してみてください。それはあなたのためにすべてを実装し、競争条件を避ける。あなたはそれが欠陥のカップルを持って実現しようとしているマニュアルの方法、すなわち

  • 2つのスクリプトは同時に、彼らが同じCOUNT(10言う)を取得するので、両方のID 11に挿入しようとするかもしれないの両方に挿入しようとしている場合
  • 10個のアイテムを追加してアイテム1を削除すると、COUNTは9を返しますが、ID 10は既に存在します。
関連する問題