2012-04-06 101 views
0

我嘗試構建一個集成其他變量的變量。select count does not 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行的數量,並有我的最後一個變量,這是建立我的新變量所必需的。

因爲這個wonT統計輸入和輸出0.我不明白爲什麼會發生這種情況。

如果有人能告訴我我做錯了什麼,我真的很感激。非常感謝。

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

現在的希望,這將是清楚我想辦法的。

+0

爲什麼你不能只是做你的插入,並檢查後insert_id?你真的需要知道該行插入行_before_的id嗎? – 2012-04-06 09:11:02

+0

,因爲我喜歡生成一個不能存在兩次的變量,並且我正在查找的這個變量應該是插入查詢的一個元素。該變量中的其他變量由time()或特定的id生成。對於我自己,我喜歡在這個新變量的輸出中看到一些鍵,如$ id- $ unix-timestamp- $ auto_increment_nr。因爲這個原因我喜歡那樣。我想保存自己的第一個生成一個插入,然後做一個更新。 – bonny 2012-04-06 09:19:10

+0

對不起,我不明白你想達到什麼。無論如何,不​​要重新發明輪子。如果你需要在MySQL中使用AUTO INCREMENT自動遞增的ID。如果你在PHP中需要使用http://uk.php。net/uniqid,但這不會在您的應用程序中唯一,只是在您的請求內。 – liquorvicar 2012-04-06 09:53:04

回答

3

嘗試

SELECT COUNT(*) FROM table1 
3

如果您需要在MySQL自動遞增列,那麼你應該使用AUTO_INCREMENT。它爲你實現這一切,並避免競爭條件。你想實現它的手工方式有幾個缺點,即

  • 如果兩個腳本試圖同時插入他們可能都得到相同的COUNT(如10),因此都試圖用ID 11插入。然後你將失敗(否則你將會有重複!)
  • 如果你添加了10個項目,但是刪除了項目1,COUNT將返回9,但是id 10已經存在。