Piotr Mirosz
Piotr Mirosz

Reputation: 866

How can i create a array with arrays created from db using fetch?

Edit: I found a answer, so if we have to loop twice and create array inside array just do:

$data1=array_merge($data1,$result->fetch_all(MYSQLI_ASSOC));

my structure need to look like that:

['some':[{'num1':1,'num2':2},{'num1':10, 'num2':20}],'nextOne':[{'num1':1,'num2':2},{'num1':10, 'num2':20}],..... (and more...)

I have to create json data from around 4k records so i separate main data and i did something like that:

$data1 = array();
$data2 = array();
//etc.. up to 14 records

I had one existing table but i also create next with main separators, for separate data so for example:

$sql1 = "SELECT some.tit AS Title,someExtra.sub AS SubTitle FROM some INNER JOIN someExtra ORDER BY orderNr";
$result1 = $conn->query($sql1);
  while($row = $result1->fetch_assoc()){
  $myData = $row["Title"];
  $my2ndData = $row["SubTitle "];

And now i need to find that data in next table and pass it to my array so..

$sql2 = "SELECT * FROM main WHERE expect = '$myData' AND expect2 = $my2ndData";
  $result2 = $conn->query($sql2);
    if($myData == 'That i need'){

      $data1+=$result2->fetch_all(MYSQLI_ASSOC);

So like in example we have 2 loops, if we will have for example few records in 'someExtra' table that will match 'some' table will look next one for example : 4 times.. So if i will echo number of results inside my array just before i will send it to right array i will have 4,22,1,55,33 record in each. But on end of a script when i will count array i will heave only 33 records instead of have 115.

Also i try

array_push($data1, $result2->fetch_all(MYSQLI_ASSOC));

But that one doesynt work eather, becouse it add arrays with values to existing array... so i will have array in array in array with is not that i wont.

My final output look like that:

$outp=array('some'=>$data1,'AnextOne'=>$data2)
$myJSON = json_encode($outp, JSON_NUMERIC_CHECK);

Upvotes: 0

Views: 49

Answers (1)

Piotr Mirosz
Piotr Mirosz

Reputation: 866

After few hour of trying i solve the issue. So if you will have to transfer your data from database in to json format, and separate your data by specifying keys. just do:

$data1=array_merge($data1,$result->fetch_all(MYSQLI_ASSOC));

Where:

$data1 - name of your 1st array (value for key number 1)

$result->fetch_all(MYSQLI_ASSOC) - array format where key is a row name and value is your data from row.

array_merge - that will connect your new array with old one without creating other arrays inside existing one.

Upvotes: 1

Related Questions