亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在數據庫查詢中使用會話和數組來存儲和顯示數據

如何在數據庫查詢中使用會話和數組來存儲和顯示數據

PHP
揚帆大魚 2023-07-15 17:32:26
我想將數據保存到數組中并在輸入數據后使用會話。我已經嘗試過并且成功了。但我想顯示從數據庫中獲取的一些數據并將其保存到數組和會話中。我嘗試過添加數據庫查詢,但數據只能保存一項數據。<?phpif (!isset($_SESSION)) {session_start();# code...}include_once "AlgoCBC.php";function additem($jns, $hrg, $hrg_tw, $total, $kt_satu, $kt_dua, $kt_tiga, $kt_empat, $kt_lima, $kt_enam, $kt_tujuh){? ??? ? if (empty($_SESSION['$jns'])) {? ? ? ? include "koneksi.php";? ? ? ? $_SESSION['jenis'] = array();? ? ? ? $jen = array_push($_SESSION['jenis'], $jns);? ??? ? ? ??? ? ? ? foreach ($jen 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']));? ? ? ? ? ? ? ? ?}? ? ? ? ? ? ? ? }? ? $_SESSION['merk'] = array();? ? $_SESSION['model'] = array();? ? $_SESSION['warna'] = array();? ? $_SESSION['kuantiti'] = array();? ? $_SESSION['harga'] = array();? ? $_SESSION['harga_tawar'] = array();? ? $_SESSION['harga_jual'] = array();? ? }? ? $kn = $kt_satu + $kt_dua + $kt_tiga + $kt_empat + $kt_lima + $kt_enam + $kt_tujuh;? ? array_push($_SESSION['merk'], $mrk);? ? array_push($_SESSION['model'], $mdl);? ? array_push($_SESSION['warna'], $wrn);? ? array_push($_SESSION['kuantiti'], $kn);?? ? array_push($_SESSION['harga'], $hrg);? ? array_push($_SESSION['harga_tawar'], $hrg_tw);? ? array_push($_SESSION['harga_jual'],$total);}所以它只能保存1個數據。如果輸入新數據,則先前的數據將丟失。
查看完整描述

2 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

您在每次迭代中覆蓋 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。


我希望這能幫助您解決您的問題。


如果您想使用查詢搜索多個 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']));

     }

  }

通過這種方法,您可以獲取上面提到的 ids 的所有數據并將其分配給數組。


查看完整回答
反對 回復 2023-07-15
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

導致此問題的原因是它添加到變量中,并且由于相同的變量名稱,相同的變量每次都會被覆蓋。您要么需要清空這些變量,要么將它們推送到其他地方并可以使用它。


為此,我們可以使用 php 函數 array_push 將它們推送到主數組中。


$master = array();

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($master,$data);

                 }


查看完整回答
反對 回復 2023-07-15
  • 2 回答
  • 0 關注
  • 157 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號