sql >> データベース >  >> RDS >> Mysql

データベースクエリでセッションと配列を使用してデータを保存および表示する方法

    各反復でwhileループ内の3つの変数すべてを上書きしているため、1つの結果(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を使用することを強くお勧めします。

    これが問題の解決に役立つことを願っています。

    クエリを使用して複数のIDを検索する場合:(コメントで言及したので、ここに追加します。)

    例:

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

    この方法により、上記のIDのすべてのデータを取得し、それを配列に割り当てることができます。



    1. sqlplus入力ファイルのテーブル名のパラメータ化

    2. PostgreSQL 8.3の権限が更新されていません-間違った使用法ですか?

    3. 返すべき数値の代わりに'リソースID#12を返すMYSQLクエリ

    4. MySQLLIKE制限