将mysqli查询结果读取到多维数组中


Read mysqli query result into multi-dimensional array

我有一个代码可以根据用户输入序列从MySQL数据库中读取数据,我希望所有结果都存储在一个多维数组中,以便在后面的部分中使用。但是,代码将只存储最后一个数组,而不是每个数组我的代码有什么问题吗?

for($i = 0 ; $i < sizeof($up_gene) ; $i ++){
    $geneName = $up_gene[$i];
    $mysql = "SELECT * FROM clmap WHERE GeneID = '$geneName'";
    $result = mysqli_query($con, $mysql);
    $row = mysqli_fetch_array($result , MYSQLI_NUM);
    $up_temp[$i] = $row;
}

我的数据库中的数据如下:

GeneID  | 17_AAG | HUTYG | A_770897 | AICAR | ...
-------------------------------------------------
FR2L1   | 1390   | 6746  | 4316     | 1051  | ...
ALDH1A1 | 288    | 7622  | 12       | 98867 | ...
# other rows is similar to above #

如果我输入GeneID的列表,例如FR2L1ALDH1A1ABATAAAS,输出数组将只具有最后一个数组的值,在这种情况下为$up_temp[3],从$up_temp[0]$up_temp[2]的其余数组为空。数据库中有数百万行,但我只需要选择用户的输入GeneID

print_r($up_temp[3]) 输出

阵列([0]=>F2RL1[1]=>1390[2]=>6764[3]=>4316[4]=>1051[5] =>11654[6]=>1871[7]=>8863[8]=>1245[9]=>6438[10]=>12693[11]=>7525[12]=>10372[13]=>10625[14]=>7114[15]=>12180[16]=>2760[17]=>375[18]=>12525[19]=>2828[20]=>6938[21]=>5926[22]=>8906[23]=>9372[24]=>6341[25]=>1427[26]=>3858[27]=>1194[28]=>3510[29]=>2462[30]=>3301[31]=>1909[32]=>3816[33]=>8901[34]=>5361[35]=>2711[36]=>5294[37]=>6138[38]=>10272[39]=>9893[40]=>1205[41]=>10868[42]=>3016[43]=>1601[44]=>315[45]=>2577[46]=>6226[47]=>274[48]=>1573[49]=>2681[50]=>1447[51]=>5375[52]=>1381[53]=>6405[54]=>11033[55]=>7915[56]=>8293[57]=>3446[58]=>231[59]=>9772[60]=>4684[61]=>432[62]=>1815[63]=>10904[64]=>41[65]=>4647[66]=>3238[67]=>5488[68]=>2340[69]=>4925[70]=>2513[71]=>911[72]=>3736[73]=>6593[74]=>1441[75]=>3098[76]=>2976[77]=>4665[78]=>8056[79]=>10717[80]=>53[81]=>4159[82]=>9920[83]=>5673[84]=>12146[85]=>2072[86]=>4753[87]=>9678[88]=>6811[89]=>7519[90]=>10708[91]=>1215[92]=>6837[93]=>6817[94]=>6085[95]=>7160[96]=>9059[97]=>7729[98]=>5330[99]=>179[100]=>1020[101]=>8672[102]=>9971[103]=>7189[104]=>2307[105]=>2849[106]=>4897[107]=>1229[108]=>11588[109]=>1923[110]=>12715[111]=>2099[112]=>12035[113]=>4062[114]=>1416[115]=>547[116]=>1915[117]=>7689[118]=>6641[119]=>11312[120]=>7079[121]=>8564[122]=>2156[123]=>539[124]=>4850[125]=>10205[126]=>1756[127]=>1266[128]=>3468[129]=>7341[130]=>8809[131]=>11949[132]=>10126[133]=>3436[134]=>8066[135]=>3116[136]=>4155[137]=>1637[138]=>1717[139]=>2045[140]=>7511)

print_r($up_temp[0])print_r($up_temp[2])的输出:空


更新:原来我的$up_gene变量没有正确输入,只是意识到每个变量后面都有空间,这导致MySQL查询前几个变量返回空。上面的代码确实按预期工作。

试着这样做:

$up_temp = array();
$sql = "select * from clmap where GeneID in(".implode(",",$up_gene).");";
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_array($result , MYSQLI_NUM)){
    $up_temp[] = $row;
}

实现数组$up_gene,使所有id都是逗号分隔的字符串。然后使用mysql in来获取所有具有其中一个id的行。至少运行一个while循环,并将$row数组存储到多维数组$up_temp 中