使用PHP和Ajax的MySQL查询

使用PHP和Ajax的MySQL查询,php,jquery,mysql,ajax,cordova,Php,Jquery,Mysql,Ajax,Cordova,我有两张桌子,tbl_类,tbl_食品。我使用的是Cordova,所以我使用了一个html文件,一个remote.php文件,我想从tbl_食品中选择所有,其中类别ID可以是1、2或3 我对php文件使用以下代码: <?php include "db.php"; if(isset($_POST['check'])) { $ID=$_POST['ID']; $data=array(); $q=mysql_query("select * from `tbl_foo

我有两张桌子,tbl_类,tbl_食品。我使用的是Cordova,所以我使用了一个html文件,一个remote.php文件,我想从tbl_食品中选择所有,其中类别ID可以是1、2或3

我对php文件使用以下代码:

<?php
 include "db.php";
 if(isset($_POST['check']))
 {
    $ID=$_POST['ID'];
    $data=array();
    $q=mysql_query("select * from `tbl_food` WHERE Cat='$ID'");

    while ($row=mysql_fetch_assoc($q)){
    $data[]=$row;
    echo json_encode($data);
    }


}
?>
这是我在HTML文件中使用的ajax代码,一旦我从下拉列表中选择类别,就会调用该函数:

function getFoodList() {
            var ID = $('#foodcat :selected').val();
            var dataString = "&ID=" + ID + "&check=";
            $.ajax({
                    type: "POST",
                    url: "http://myurl.com/load_list.php",
                    data: dataString,
                    dataType: 'json',
                    crossDomain: true,
                    cache: false,
                    success: function (data) {
                    var result=$.parseJSON(data);
                            $.each(result, function (index, val) {
                                $("#foodlist").append($('<option></option>').val(val.Points).html(val.Name) + " - " + val.Quantity);
                            });
                    }
                });
        }

问题是它永远不会到达success函数:这意味着如果我没有错的话,php不会返回任何内容。

1从php v5.5.0开始,整个ext/mysql php扩展(提供了所有以前缀mysql_命名的函数)已被正式弃用,并将从php 7中删除。请不要使用它。你可以使用PDO或mysqli_3;

2不要写直接查询,使用准备。直接查询导致sql注入 请参阅:

3现在您的实际问题是ajax。您正在ajax中使用POST方法,并将数据作为查询字符串发送

请尝试以下代码:

JS功能:

function getFoodList() {
            var catid = $('#foodcat :selected').val();
            $.ajax({
                    type: "POST",
                    url: "http://myurl.com/load_list.php",
                    data: {ID:catid,check:"SOME_VALUE"},
                    dataType: 'json',
                    crossDomain: true,
                    cache: false,
                    success: function (data) {
                    var result=$.parseJSON(data);
                            $.each(result, function (index, val) {
                                $("#foodlist").append($('<option></option>').val(val.Points).html(val.Name) + " - " + val.Quantity);
                            });
                    }
                });
        }
PHP代码:

<?php
 include "db.php";
 if(isset($_POST['check']))
 {
    $ID=$_POST['ID'];
    $data=array();
    $q=mysql_query("select * from `tbl_food` WHERE Cat='$ID'");

    while ($row=mysql_fetch_assoc($q)){
    $data[]=$row;

    }

    echo json_encode($data); //this needs to be placed outside the loop.


}
?>

请已在PHP7中删除。了解使用PDO的语句,并考虑使用PDO。您在浏览器的开发工具中查看请求/响应吗?在PHP侧打印时会给出什么?