sql >> Databasteknik >  >> RDS >> Mysql

hur man använder sessioner och arrayer i en databasfråga för att lagra och visa data

du skriver över alla tre av dina variabler inuti while-slingan i varje iteration, det är därför du bara får ett resultat (vilket var den sista datamängden som kördes i while loop.

Det finns i princip tre saker du kan göra för att lösa ditt problem.

1.Använd en array för att lagra alla resultat som du får från loopen

    while ($y=mysqli_fetch_array($sql)) {
          $mrk[] = implode("", DekripCBC($y['nama_merk']));
          $mdl[] = implode("", DekripCBC($y['nama_model']));
          $wrn[] = implode("", DekripCBC($y['warna']));
     }

2. Använd en fördefinierad array för att lagra alla resultat som du får från slingan med array_push .

  /**There are 3 ways to define an empty array. You can use any of the following
      1.$emptyArray = [];
      2.$emptyArray = array();
      3.$emptyArray = (array) null;
   * */

  $dataSet =[];

    while ($y=mysqli_fetch_array($sql)) {
          $data['mrk'] = implode("", DekripCBC($y['nama_merk']));
          $data['mdl'] = implode("", DekripCBC($y['nama_model']));
          $data['wrn'] = implode("", DekripCBC($y['warna']));

        array_push($dataSet ,$data);
     }

3. sammanfoga värdena till din variabel

  while ($y=mysqli_fetch_array($sql)) {
    // I have added a seprator(,) for all the variables so that there will be a , after every result and it wouldn't make you confused at the end
         $mrk .= implode("", DekripCBC($y['nama_merk'])).','; 
         $mdl .= implode("", DekripCBC($y['nama_model'])).',';
         $wrn .= implode("", DekripCBC($y['warna'])).',';
  }

Jag rekommenderar starkt att du använder metod nr.1 eller nr.2.

Jag hoppas att detta skulle hjälpa dig att lösa ditt problem.

Om du vill söka efter flera ID med hjälp av frågan:(eftersom jag nämnde det i kommentarerna lägger jag till det här.)

EX:

//You have multiple ids that you get from the session.

$jns = [12,13,4,5]; 

 //So now you can use a foreach loop to loop all the ids and use the query to get relevant data

 foreach($jns as $id){
     $sql = mysqli_query($kns, "Select stok.id_stok as id_stok, merk.nama_merk as nama_merk, model.nama_model as nama_model, stok.warna as warna FROM stok INNER JOIN model On stok.id_model=model.id_model INNER JOIN merk ON model.id_merk=merk.id_merk where id_stok = '$id' ") or die(mysqli_error($kns));

    while ($y=mysqli_fetch_array($sql)) {
       $mrk[] = implode("", DekripCBC($y['nama_merk']));
       $mdl[] = implode("", DekripCBC($y['nama_model']));
       $wrn[] = implode("", DekripCBC($y['warna']));
     }
  }

Med den här metoden kan du få all data för de ID som nämns ovan och tilldela den till arrayen.



  1. Vad är det för fel på min MySQL CASE/NÄR syntax?

  2. Algoritm som söker efter relaterade objekt baserat på vanliga taggar

  3. Hur får man genererade nycklar av executeBatch utan ArrayIndexOutOfBoundsException?

  4. Hur gör man flera LEFT JOINs med ELLER använder ett sammansatt index fullt ut?