Mysql
 sql >> база данни >  >> RDS >> Mysql

как да използвате сесии и масиви в заявка за база данни за съхраняване и показване на данни

вие презаписвате всичките си три променливи вътре в цикъла while при всяка итерация, Ето защо получавате само един резултат (който беше последният набор от данни, който беше изпълнен в while цикъл.

Има основно 3 неща, които можете да направите, за да разрешите проблема си.

1. Използвайте масив, за да съхранявате всички резултати, които получавате от цикъла

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

2. Използвайте предварително дефиниран масив, за да съхранявате всички резултати, които получавате от цикъла с помощта на 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.свържете стойностите във вашата променлива

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

Силно бих ви препоръчал да използвате метод №1 или №2.

Надявам се, че това ще ви помогне да разрешите проблема си.

Ако искате да търсите множество идентификатори, като използвате заявката:(тъй като споменах в коментарите, ще я добавя тук.)

ПРИМЕР:

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

Чрез този метод можете да получите всички данни за идентификаторите, споменати по-горе, и да ги присвоите към масива.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Йерархични заявки в MySQL

  2. Съхранение на масив с неизвестна дължина

  3. Излишно ли е съхраняването на броя на записите в базата данни?

  4. Получаване на сумата от стойност за два отделни диапазона от дати в една и съща колона и в една MySQL заявка

  5. Как да създам ефективен DQL оператор, който да съответства на моя ефективен SQL, когато правя просто LEFT JOIN?