2010-08-02 30 views
1

嘿傢伙,看看這個,也許你可以幫助我。 這段代碼很自我解釋,它通過cron工作重複自己。Mysql,重置id的

<?php 
$dbhost = 'blabla'; 
$dbuser = 'blabla'; 
$dbpass = 'blabla'; 
$dbname = 'blabla'; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 
mysql_select_db($dbname); 
$table = 'cron'; 
$feed = 'a big xml feed'; 

$xml = simplexml_load_file($feed); 

mysql_query("TRUNCATE TABLE ".$table.""); // empties cron 

foreach($xml->performerinfo as $performerinfo) 
{ 
    bla bla inside foreach to get data from xml 

    mysql_query("INSERT INTO ".$table." (performerid, category, subcategory, build, hairlength, ethnicity, willingness, pic0, pic1, pic2, pic3, pic4, age) VALUES ('$performerid', '$category', '$subcategory', '$build', '$hairlength', '$ethnicity', '$willingness', '$pic0', '$pic1', '$pic2', '$pic3', '$pic4', '$age')"); 
} // inserts into cron 

    mysql_query("TRUNCATE TABLE newtable"); // empties newtable 

    mysql_query ("INSERT INTO newtable SELECT * FROM ".$table." WHERE ethnicity = 'White' AND age BETWEEN '30' AND '45' AND build <> 'above average' AND build <> 'large' AND build <> 'average' AND hairlength <> 'short'"); // inserts into newrtable 

?> 

的問題,希望你能理解我;)

表的Cron有編號的,從1到1000

id  int(11)    No   auto_increment 

時篩選cron和插入行到newtable中,我得到的ID喜歡:20,65,145,699等

如何重置新表的ID,使它們從1到35連續出現,可以說... 強文本

回答

2

可以重置自動遞增ID,但不會自動發生這種情況的原因是爲了防止具有與舊的刪除ID相同的ID的新記錄。這被認爲是不好的做法。

ID是39還是293440對您的應用程序無關緊要。如果它確實很重要,那麼你會遇到一個架構問題。

+0

真的需要解決它,因爲我使用這個代碼與wordpress循環,並且我需要一種方法來處理循環內的這個問題 – webmasters 2010-08-02 16:33:54

+0

@webmasters爲什麼?如果它是一個自動增量,這不應該是必要的。如果您需要爲其分配帖子ID,則它不應該是自動增量。 – 2010-08-02 17:01:59

1

不要在你的「select * from ...」中選擇id,而是在newtable中有一個auto_increment字段。

我不知道如果截斷將重置AUTO_INCREMENT計數器,但你可以

ALTER TABLE newtable AUTO_INCREMENT=1 

您可以考慮使用臨時表,因爲您截斷結束填充他們所有的時間做手工。

+0

MySQL中的truncate會重置auto_increment字段 – Kris 2013-09-04 12:31:08