2016-08-15 44 views
0

我想做一個while循環,它從Mysql數據庫中檢索所有相關數據,但它不適用於多個變量,我認爲這個問題與while循環有關,因爲我回顯了sql語句,該變量的值正確,代碼:while循環不能用於多個變量php?

$wherein = implode(',', $_SESSION['cart']); 
$sql = "select ID, Name, Price from lamps WHERE ID = '$wherein'"; 
$result = mysqli_query($conn, $sql); 

echo "<table style='width:100%' border='1' >"; 
echo "<tr>"; 
echo "<th> Product Name</th>"; 
echo "<th>Product Price </th>" ; 
echo "<th>Quantity </th>" ; 
echo "</tr>"; 

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { 
    echo "<tr>"; 
    echo "<td>" . $row['Name'] . "</td>"; 
    echo "<td> $". $row['Price'] . "</td>" ; 
    echo "<td> <select> 
     <option value= '1'>1</option> 
     <option value= '2'>2</option> 
     <option value= '3'>3</option> 
    </select> 
    </td>"; 

    echo "</tr>"; 
} 

echo "</table>"; 

我已經嘗試了許多事情的代碼,但問題依然存在,我將非常感謝您的幫助,謝謝。

+0

你是什麼意思說_it適用於一個變量_?順便說一句,有一個** $ **之前_ $行['價格'] _ –

+0

好吧,它唯一的工作1次,因爲你的查詢只獲得1行,我們假設數據庫有單身份證的人不重複,如果你的查詢是:給我一些字段id = single_id,那麼結果將是1行,如果它存在... –

+0

@PavulZavala我回應了查詢,它有多個變量 – hossam

回答

1

</table>語句位於while循環中。因此,一旦表格在第一次循環後關閉,其餘的數據可能不會顯示在瀏覽器上(它仍然會在您的html源代碼中)。嘗試將</table>語句移動到最後一行。

+0

我剛試過但仍然不幸沒有工作 – hossam

1

假設通過imploding變量你將有多個ID,那麼你應該在SQL中使用IN語句。

$wherein = implode("','", $_SESSION['cart']); 
$sql = "select ID, Name, Price from lamps WHERE ID IN ('$wherein')"; 

呈現的輸出可以稍微簡化,表格應該在循環後關閉!不知道的內容$wherein使得它棘手的回答,但我會認爲IN說法似乎符合一個逗號分隔值的性質在查詢中使用比直接等號=

$wherein = implode("','", $_SESSION['cart']); 
$sql = "select ID, Name, Price from lamps WHERE ID IN ('$wherein')"; 
$result= mysqli_query($conn, $sql); 

echo " 
    <table style='width:100%' border='1' > 
     <tr> 
      <th> Product Name</th> 
      <th>Product Price </th> 
      <th>Quantity </th> 
     </tr>"; 

while ($row = mysqli_fetch_object($result)){ 
    echo " 
     <tr> 
      <td>{$row->Name}</td> 
      <td>${$row->Price}</td> 
      <td> 
       <select> 
        <option value= '1'>1 
        <option value= '2'>2 
        <option value= '3'>3 
       </select>   
      </td> 
     </tr>"; 
} 
echo " 
    </table>"; 


/* Example of using an array of IDs and imploding to generate where conditions for IN clause */ 

$cart=array('BGL1','BJL'); 
/* session - cart */ 

$wherein=implode("','", $cart); 
/* correctly add quotes around each string */ 

$sql="select ID, Name, Price from lamps WHERE ID IN ('$wherein');"; 
/* use the new $wherein string within quotes */ 
echo $sql; 

>> select ID, Name, Price from lamps WHERE ID IN ('BGL1','BJL'); 
+0

我試過的第一件事查詢是這個確切的語句,但仍然存在這個問題 – hossam

+0

當變量已設置時,最終的SQL看起來像什麼?即:你是否可以在執行時顯示sql – RamRaider

+0

對多個變量執行時,它只顯示列頭,但只有一個變量時顯示該變量的所有信息;產品名稱和價格 – hossam