使用下拉值返回PHP查询结果

时间:2014-01-18 17:37:25

标签: php mysql jquery

这是我第一次尝试使用ajax来运行php查询。 我的主要目标是从我的数据库中提取数据而不刷新页面。我有一个下拉菜单,其中的选项是不同类别的产品。

    <form id='theForm'>
    <select name="category" id='category'>
     <option value="">Select Food Category</option>
     <option value="Dairy" >Dairy</option>
     <option value="Fruits" >Fruits</option>
     <option value="Grains" >Grains</option>
     <option value="Nuts &amp; Beans" >Nuts &amp; Beans</option>
     <option value="Oils" >Oils</option>
     <option value="Other" >Other</option>
     <option value="Protein Foods" >Protein Foods</option>
     <option value="Supplements" >Supplements</option>
     <option value="Vegetables" >Vegetables</option>
    </select>
    </form>
<div id='result'><div>

我正在尝试使用以下Ajax调用将下拉菜单的选定值发送到我的数据库的PHP查询,以将该类别的所有产品的名称返回到单独的下拉列表中。

AJAX致电:

$(document).ready(function(){
$("#category").change(function()
{
var selectedcat=$(this).val();
        $.ajax({
            url: "getfoods.php",
            data: {q:selectedcat},
            type:'POST',
            success: function(data){
            $('#result').html(data);
            },
            error:function(msg){
            alert("Error: "+msg);
            }
        });//end ajax request     
});//end category change
});//end doc ready

php代码如下:

<?php
$q = $_POST['q'];

$con=mysqli_connect("localhost","xxxxxx","xxxxxx","xxxxxx");
if (mysqli_connect_errno($con))
{
    echo "Failed to connect to MySQL: ". mysqli_connect_error();
}
mysqli_select_db($con,productDB);

$sql="SELECT * FROM Products WHERE Category = '".$q."'";

$result = mysqli_query($con,$sql);
echo "<form method='post'  id='form1'><select id='food_dd'>";
while($row = mysqli_fetch_array($result))
  {
  echo "<option value='". $row['FoodName']."'>".$row['FoodName']."</option>";
  }
echo "</select></form>";


mysqli_close($con);
?>

经过大量研究试图找到例子,我仍然无法得到这个要求。我已经尝试用javascript进行这种类型的调用,但我真的很想使用JQuery。

提前谢谢! 凯尔

3 个答案:

答案 0 :(得分:0)

使用,

  $('#result').html(data);

而不是

 $('#result').text(data);

答案 1 :(得分:0)

对于给您带来的不便,我深表歉意。我刚刚意识到php文件被移动到另一个目录中。代码现在正在运行。感谢您的时间。

答案 2 :(得分:0)

您应该阅读有关SQL注入的信息。客户的每一个输入都必须被视为敌对。现在的样子,打破SQL查询并做任何你喜欢的事情是孩子的游戏。它可能在技术上与理智的输入相关,但不会冒任何可能。

此外,你应该检查$ _POST ['q']是否存在,你应该对输入进行整理。另外阅读有关准备好的陈述和PDO。