Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jak używać sesji i tablic w zapytaniu do bazy danych do przechowywania i wyświetlania danych?

nadpisujesz wszystkie trzy zmienne wewnątrz pętli while w każdej iteracji, dlatego otrzymujesz tylko jeden wynik (który był ostatnim zestawem danych, który został wykonany wewnątrz while pętla.

Istnieją zasadniczo 3 rzeczy, które możesz zrobić, aby rozwiązać swój problem.

1.Użyj tablicy do przechowywania wszystkich wyników uzyskanych z pętli

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

2. Użyj predefiniowanej tablicy do przechowywania wszystkich wyników uzyskanych z pętli za pomocą 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. połącz wartości w swojej zmiennej

  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'])).',';
  }

Gorąco polecam użyć metody nr 1 lub nr 2.

Mam nadzieję, że pomoże to w rozwiązaniu problemu.

Jeśli chcesz wyszukać wiele identyfikatorów za pomocą zapytania:(ponieważ wspomniałem w komentarzach, dodam je tutaj.)

Np.:

//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']));
     }
  }

Dzięki tej metodzie możesz pobrać wszystkie dane dla identyfikatorów wymienionych powyżej i przypisać je do tablicy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja WHERE po UNION w SQL?

  2. MySql:przyspiesz to zapytanie... czy jest na to sposób?

  3. konwertuj wyrażenie regularne PCRE na wyrażenie regularne zapytania mysql

  4. Weź i pogrupuj według w EntityFramework

  5. Funkcja MySQL password() do PHP