2016-05-26 12 views
2

2つのドロップダウンメニューがあります。最初のものをクリックすると、最初の選択に関連する値が表示されます。しかし、私が最初のものを選択すると、これが得られます。エラー: 'where句'の 'abc'列が不明です

Error: Unknown column 'abc' in 'where clause'

以下は私のコードです。私が間違っていることを教えてくれる人もいます。前もって感謝します。

<?php 
include ('db_connect1.php'); 
$query_parent = mysqli_query($conn, "SELECT * FROM field") or die("Query failed: ".mysqli_error()); 
?> 
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Dependent DropDown List</title> 
<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 

$("#parent_cat").change(function() { 
    $(this).after('<div id="loader"><img src="img/loading.gif" alt="loading subcategory" /></div>'); 
    $.get('loadsubcat.php?parent_cat=' + $(this).val(), function(data) { 
     $("#sub_cat").html(data); 
     $('#loader').slideUp(200, function() { 
      $(this).remove(); 
     }); 
    }); 
}); 

}); 
</script> 
</head> 

<body> 
<form method="get"> 
<label for="category">Parent Category</label> 
<select name="parent_cat" id="parent_cat"> 
    <?php while($row = mysqli_fetch_array($query_parent)): ?> 
    <option value="<?php echo $row['field_name']; ?>"><?php echo $row['field_name']; ?></option> 
    <?php endwhile; ?> 
</select> 
<br/><br/> 

<label>Sub Category</label> 
<select name="sub_cat" id="sub_cat"></select> 
</form> 
</body> 
</html> 

//loadsubcat.php 
<?php 
include ('db_connect1.php'); 

$parent_cat = $_GET['parent_cat']; 
$test="SELECT * FROM courses WHERE field_id = {$parent_cat}"; 
$query = mysqli_query($conn,$test) or die ("Error: ".mysqli_error($conn)); 
while($row = mysqli_fetch_array($query)) { 
echo "<option value='$row[course_id]'>$row[course_name]</option>"; 
} 
?> 
+0

防ぐために? – Saty

+3

あなたの$ parent_catはおそらく文字列です。比較するときに引用したり、数値であることを確認してください。 – Muriano

+0

値は文字列です。 –

答えて

0

$であれば値を取得parent_cat、あなたはこの

$test="SELECT * FROM courses WHERE field_id = '{$parent_cat}'"; 

あなたはまた、代わりに

$test="SELECT * FROM courses HAVING field_id = '{$parent_cat}'"; 
+0

私は今何かエラーはありませんが、私は戻ってくる価値がありません。私はそこからそれを解決しようとします。非常にありがとうございます –

+0

値が何であるかを見るためにvar_dump($ parent_cat)を試してください。それがあなたを助けても問題ありません!敬具。 –

+0

HAVING句の間違った提案HAVINGを使用するときに読むhttp://www.w3schools.com/sql/sql_having.asp – Saty

0

の文字列値をしなければならないHAVINGないことができますしようと、 "単一引用符" を追加する必要がありますfield_idvarcareであることを確認してください。

$parent_cat = $_GET['parent_cat']; 
$stmt = $conn->prepare("SELECT * FROM courses WHERE field_id = ?"); 
    $stmt->bind_param('s', $parent_cat); 
    $result = $stmt->execute(); 

    $stmt->store_result(); //store_result() 
    str=""; 
    if ($stmt->num_rows > 1) { // counts the rows for query. 
     while ($row = $result->fetch_assoc()) { 
      $str.= "<option value='".$row['course_id']."'>'".$row['course_name']."'</option>"; 
     } 
    } 
echo $str; 

あなたのコードはSQLインジェクションのためのOPenです。

読むHow can I prevent SQL injection in PHP?は、 `$のparent_cat`の値は何である

+0

大丈夫です。アドバイスをいただきありがとうございます –

関連する問題