iT邦幫忙

0

兩個 while 好嗎?有更好的寫法嗎?

<? while($row = mysqli_fetch_array($data)){ ?>
           
                <?
                $product_data = $pdo->query(
                  "SELECT DISTINCT p.prod_id, p.icon FROM product AS p
                  JOIN product_order AS po ON p.prod_id = po.prod_id
                  JOIN user_order AS uo ON po.order_id = '{$row['order_id']}' AND uo.id = '{$_SESSION['user-id']}' "
                );
                while ($product_row = mysqli_fetch_array($product_data)){ ?>
                  <img class="" src="<?=$product_row['icon'];?>">
                <? }?>
              <?=$row['order_id'];?>
          <?}?>
      ```
      
      
這樣的 兩個 while 大神有什麼其他好的寫法嗎?
我已經思路死
總覺得哪裡怪怪的?
有大大提供更好的寫法可以分享嗎?
kksugsay iT邦新手 1 級 ‧ 2018-06-30 08:16:24 檢舉
不是while的問題,是整個都有問題~
slime iT邦大師 1 級 ‧ 2018-07-01 00:28:29 檢舉
1. 用 try catch
2. 用 foreach
先分析你的資料庫的處理方式吧!
有時候改一下你的語法條件,很可能你sql只要跑一次就全解了。
資料庫內部處理的機制往往都比你想的還要快。

2 個回答

0
純真的人
iT邦研究生 3 級 ‧ 2018-07-01 09:53:44
最佳解答

嗯...雖然我是專寫.net系列
但php也是有需要幫人改寫才碰...

依照我目前的寫法是盡量SQL不要放在迴圈裡面,因為我有看過網頁跑很慢~

如果兩個迴圈合併成一個迴圈讀出~會比較快~減少讀取資料庫的時間~

0
小魚
iT邦研究生 1 級 ‧ 2018-06-30 07:41:57

兩個while沒什麼不好,
因為從資料庫抓資料,
資料是有限的,
雖然是while但其實就像for的概念一樣,
不是無窮迴圈。

froce iT邦研究生 4 級 ‧ 2018-06-30 09:08:27 檢舉

設定好結束狀況,確定一定會結束就能用while,沒保握最好不要用,乖乖用for。

小魚 iT邦研究生 1 級 ‧ 2018-06-30 09:32:42 檢舉

不過 mysqli_fetch_array 應該沒辦法用for吧

小魚 iT邦研究生 1 級 ‧ 2018-06-30 09:34:45 檢舉

不過有人建議現在最好用PDO,
不要再用mysqli了...

我要發表回答

立即登入回答