2017-08-26 49 views
0

我有這樣的代碼:如何從數據庫中獲取數據到PHP選項中的另一個選項MySQL?

<html> 
<body> 
<form method="post" action=""> 
Category: <select name="category"> 
<option>Choose Category</option> 
<?php 
include("connect.php"); 
$select="SELECT * FROM category"; 
$result=mysqli_query($link,$select) or die (mysqli_error($link)); 

    while($row=mysqli_fetch_array($result)) 
    { 

    echo "<option value='$row[category]'>".$row['category']; 

    } 
?> 
</select> 

<br> 
Subcategory:<select name="category"> 
<?php 
include("connect.php"); 

[email protected]$_POST['category']; 

if($category=="Friuts") 
{ 
    $select="SELECT * FROM subcategory WHERE $category='$category'"; 
    $result=mysqli_query($link,$select) or die (mysqli_error($link)); 

    while($row=mysqli_fetch_array($result)) 
    { 

    echo "<option value='echo $row[subcategory]'>".$row['subcategory']; 

    } 
} 


?> 

</select> 
<br> 

<input type="submit" value="Open" name="submit"> 
</form> 
</body> 
</html> 

我有兩個表,表中的一個名稱類別和表中的兩個名稱的子類別,我要兩張,當我從表類別選擇一個項目選項獲得選擇選項,從表子類數據出現如下圖所示:

This image is table category

This image is table subcategory

+2

您的代碼容易受到[** SQL注入**](https://en.wikipedia.org/wiki/SQL_injection)攻擊。您應該通過[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)或[** PDO **](https ://secure.php.net/manual/en/pdo.prepared-statements.php)驅動程序。 [**這篇文章**](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)有一些很好的例子。 –

+0

@AlexHowansky這是我的代碼,我該如何修復? – Talib

+0

也許閱讀我發佈的鏈接? –

回答

1

要幫兇你想要什麼,你需要:

  1. 創建一個選擇框,顯示從主表中的值,最好是使用CATEGORY_ID作爲價值
  2. 檢查形式已提交(因此if(isset($_POST['category'])) {}。如果對子類別表運行查詢並檢查cat_id = $ _POST ['category']
  3. 在選擇框中顯示第二個查詢的結果。

或簡稱:

echo "<option value='$row[cat_id]'>".$row['category']; 

$select='SELECT * FROM subcategory WHERE cat_id="' . mysqli_real_escape_string($link, $category).'"'; 

沒有經過測試, 並請閱讀網站 '亞歷克斯Howansky' 提供!

+0

使用準備好的語句仍然會優於轉義字符串 –

+1

我100%同意。這就是爲什麼他應該閱讀Alex Howansky提供的鏈接。 – Jeffrey

+0

@Sanderbakker我可以如何使用準備聲明? – Talib

相關問題