2013-01-22 64 views
1

我有數組$總所描繪與pint_r:如何拆分數組以將其插入到另一個SQL查詢中?

Array 
(
[0] => 1,2,3,4,5,6,7,8,9,10,11,12,1 
[1] => 13,14,15,16,17,18,19,20,21,22,23,24,1 
[2] => 25,26,27,28,29,30,31,32,33,34,35,36,1 
[3] => 37,38,39,40,41,42,43,44,45,46,47,48,1 
[4] => 49,50,51,52,53,54,55,56,57,58,59,60,1 
[5] => 61,62,63,64,65,66,67,68,69,70,71,72,1 
[6] => 73,74,75,76,77,78,79,80,81,82,83,84,1 
[7] => 85,86,87,88,89,90,91,92,93,94,95,96,1 
[8] => 97,98,99,100,101,102,103,104,105,106,107,108,1 
[9] => 109,110,111,112,113,114,115,116,117,118,119,120,1 
[10] => 121,122,123,124,125,126,127,128,129,130,131,132,1 
[11] => 133,134,135,136,137,138,139,140,141,142,143,144,1 
[12] => 145,146,147,148,149,150,151,152,153,154,155,156,1 
[13] => 157,158,159,160,161,162,163,164,165,166,167,168,1 
[14] => 169,170,171,172,173,174,175,176,177,178,179,180,1 
[15] => 181,182,183,184,185,186,187,188,189,190,191,192,1 
[16] => 193,194,195,196,197,198,199,200,201,202,203,204,1 
[17] => 205,206,207,208,209,210,211,212,213,214,215,216,1 
[18] => 217,218,219,220,221,222,223,224,225,226,227,228,1 
[19] => 229,230,231,232,233,234,235,236,237,238,239,240,1 
[20] => 241,242,243,244,245,246,247,248,249,250,251,252,1 
[21] => 253,254,255,256,257,258,259,260,261,262,263,264,1 
[22] => 265,266,267,268,269,270,271,272,273,274,275,276,1 
[23] => 277,278,279,280,281,282,283,284,285,286,287,288,1 
) 

我的目標是什麼,是使一個SQL INSERT查詢這些數字,用於輸入到一個MySQL表,每個號碼2一行。在288行的表結束標記列PortNUmbers 1-288(請忽略尾隨1,它似乎已經湊湊熱鬧功能標籤,當我跑了排序()),所以這是我的SQL:

$sqlinsert=' 
    INSERT INTO '.$tbl_name.' 
    (PortNumber) VALUES (1),(2),(3)etc..'; 

很簡單,我只想爆發,把它放在一個while循環,然後破滅的查詢,但是我需要在一個相當奇怪的順序插入中的值,就像這樣:

(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(145),(146),(147),(148),(149),(150),(151),(152),(153),(154),(155),(156) 

等遵循相同的模式,直到滿足爲止。任何人對我如何實現這一目標有任何想法?

+0

實現什麼?排序模式?你還沒有真正指定這種模式是什麼。對於x = 0..n和y = 1..12,pow(12,x)+ y' –

+0

爲什麼不使用while循環在表中插入數據,然後在從數據庫中選擇數據時對數據進行排序。我不確定,但背後的原因是你想使用帶有auto_increment的ID列,並有「正確」的順序?像這樣,ID 1的值爲1 ... ID 12的值爲12,ID 13的值爲145 ... –

+0

@ Mr.Radical確切正確 – Nick

回答

2

SQL表沒有隱式順序。您不應該依賴您插入值的順序,而是查詢它們時將返回的順序。您必須使用ORDER BY對查詢結果具有可靠的順序。

如果您需要記錄輸入數據的順序,則需要另一列。

例如:

CREATE TABLE TblName (
    id INT AUTO_INCREMENT PRIMARY KEY, 
    PortNUmber INT NOT NULL 
); 

INSERT INTO TblName (PortNumber) VALUES 
(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12); 
...etc... 

自動遞增將保留在其中插入值的順序,然後你就可以在一個相當奇怪的命令,而不是數字順序插入值,但是你的願望。

+0

因此基本上基於自動ID將它們拉出表12?我不相信我沒有想到這一點。 +1爲我的遲緩。 – Nick

相關問題