while循环只运行一次

问题描述:

嵌套“”循环只运行一次,只有一个 DIV显示,找不到任何错误,误差“error_log中”嵌套。随意建议。while循环只运行一次

我需要第二个sql连接,因为$ connectToStore使mysqli连接单独的数据库。

$项目看起来像1-2,2-5,9-1

我检查,并在随即出现的div使用的数据是表格的第一行

PHP

include("connect.php"); 

$sql = "SELECT * FROM sp_tickets WHERE user_id='foo'"; 
$sqlresult = mysqli_query($connect, $sql); 
if (mysqli_num_rows($sqlresult) > 0) { 
    while ($row = mysqli_fetch_array($sqlresult)) { 

    $sqlStore = "SELECT * FROM transactions WHERE order_id='".$row['order_id']."'"; 
    $connectToStore = mysqli_connect("localhost", "root", "root", "root_db"); 
    $sqlStoreDBResult = mysqli_query($connectToStore, $sqlStore); 

    while ($rowTr = mysqli_fetch_array($sqlStoreDBResult)) { 

     $id_str_array = $rowTr['items']; 
     $id_str_array = rtrim($id_str_array, ","); 
     $id_str_array = explode(',', $id_str_array); 
     foreach ($id_str_array as $key => $value) { 
      $id_quantity_pair = explode("-", $value); // Uses Hyphen(-) as delimiter to separate product ID from its quantity 
      $product_id = $id_quantity_pair[0]; // Get the product ID 

      $sqlProduct = "SELECT * FROM products WHERE id='$product_id'"; 
      $sqlresult = mysqli_query($connectToStore, $sqlProduct); 
      while ($pp_row = mysqli_fetch_array($sqlresult)) { 

       $tickets .= '<div class="holder"> 
       <div data-ticket="' . $ticket . '" class="ticket"> 
        <div class="ticket-left"> 
         <span class="product-ticket left-span">' . $pp_row['product_name'] . ' ' . $pp_row['product_platform'] . ' ' . $pp_row['product_type'] . ' ' . $pp_row['product_region'] . '</span> 
         <span class="ticket-no left-span">Ticket No. ' . $row['ticket_id'] . '</span> 
         <span class="order-no left-span">Order No. ' . $row['order_id'] . '</span> 
         <span class="left-span">Transaction No. ' . $rowTr['txn_id'] . '</span> 
         <span class="product-region left-span">Region: ' . $pp_row['product_region'] . '</span> 
        </div> 
        <div class="ticket-right"> 
         <span class="created">Created: ' . $row['date'] . '</span> 
        </div> 
        <div class="ticket-bottom"> 
         <div class="bottom-holder"> 
          <span class="details"><span class="subject-txt">Category: </span>' . $row['category'] . '</span> 
          <span class="details"><span class="subject-txt">Subject: </span>' . $row['subject'] . '</span> 
          <span class="details desc">"' . $row['description'] . '"</span> 
         </div> 
        </div> 
       </div> 
       <div class="removeticketcontainer"> 
        <span class="removeticket">X</span> 
       </div> 
      </div>'; 
       } 
      } 
     } 
    } 
} 
+0

@The One and Only ChemistryBlob是的,它是唯一的 – EasternEuropean

+0

'$ tickets'在哪里申报? – Linesofcode

+0

如果你还没有定义'$ tickets',那么它就会出现在'$ tickets。='..''之上'应该抛出一个错误? $票从哪里来? – Jeff

看起来你的最外层,而只取一个记录

while ($row = mysqli_fetch_array($sqlresult)) { 
. . . . 
} 

摆脱最外面的,而如果你只取一个记录......

$row = mysqli_fetch_array($sqlresult);// remove closing } too 

解决它。答案属于@ckimbrell。 “问题看起来像是用一个只返回1行的新结果覆盖变量$ sqlresult,试着在嵌套循环中改变它。”

include("connect.php"); 

$sql = "SELECT * FROM sp_tickets WHERE user_id='foo'"; 
$sqlresult = mysqli_query($connect, $sql); 

$connectToStore = mysqli_connect("localhost", "root", "root", "root_db"); 

if (mysqli_num_rows($sqlresult) > 0) { 
while ($row = mysqli_fetch_array($sqlresult)) { 

$sqlStore = "SELECT * FROM transactions WHERE order_id='".$row['order_id']."'"; 
$sqlStoreDBResult = mysqli_query($connectToStore, $sqlStore); 

while ($rowTr = mysqli_fetch_array($sqlStoreDBResult)) { 

    $id_str_array = $rowTr['items']; 
    $id_str_array = rtrim($id_str_array, ","); 
    $id_str_array = explode(',', $id_str_array); 
    foreach ($id_str_array as $key => $value) { 
     $id_quantity_pair = explode("-", $value); // Uses Hyphen(-) as delimiter to separate product ID from its quantity 
     $product_id = $id_quantity_pair[0]; // Get the product ID 

     $sqlProduct = "SELECT * FROM products WHERE id='$product_id'"; 
     $sqlresult2 = mysqli_query($connectToStore, $sqlProduct); 
     while ($pp_row = mysqli_fetch_array($sqlresult2)) { 

      $tickets .= '<div class="holder"> 
      <div data-ticket="' . $ticket . '" class="ticket"> 
       <div class="ticket-left"> 
        <span class="product-ticket left-span">' . $pp_row['product_name'] . ' ' . $pp_row['product_platform'] . ' ' . $pp_row['product_type'] . ' ' . $pp_row['product_region'] . '</span> 
        <span class="ticket-no left-span">Ticket No. ' . $row['ticket_id'] . '</span> 
        <span class="order-no left-span">Order No. ' . $row['order_id'] . '</span> 
        <span class="left-span">Transaction No. ' . $rowTr['txn_id'] . '</span> 
        <span class="product-region left-span">Region: ' . $pp_row['product_region'] . '</span> 
       </div> 
       <div class="ticket-right"> 
        <span class="created">Created: ' . $row['date'] . '</span> 
       </div> 
       <div class="ticket-bottom"> 
        <div class="bottom-holder"> 
         <span class="details"><span class="subject-txt">Category: </span>' . $row['category'] . '</span> 
         <span class="details"><span class="subject-txt">Subject: </span>' . $row['subject'] . '</span> 
         <span class="details desc">"' . $row['description'] . '"</span> 
        </div> 
       </div> 
      </div> 
      <div class="removeticketcontainer"> 
       <span class="removeticket">X</span> 
      </div> 
     </div>'; 
      } 
     } 
    } 
} 
}