2013-01-22 28 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

相关问题