【问题标题】:MySQL Query using PHP and Ajax使用 PHP 和 Ajax 的 MySQL 查询
【发布时间】:2016-02-12 18:15:39
【问题描述】:

我有两张桌子 tbl_category,tbl_food。我正在使用 Cordova,所以我使用一个 html 文件、一个远程 .php 文件,并且我想从类别为“ID”的 tbl_food 中选择所有(可以是 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 不会返回任何东西。

【问题讨论】:

标签: php jquery mysql ajax cordova


【解决方案1】:

1) 整个 ext/mysql PHP 扩展,提供所有以前缀mysql_ 命名的函数,从 PHP v5.5.0 开始正式弃用,将从 PHP 7 中删除。请不要使用它。你可以使用PDOmysqli_

2) 不要写直接查询使用prepare。直接查询导致sql注入 请参考:http://php.net/manual/en/security.database.sql-injection.php

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.


}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 2010-12-10
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    相关资源
    最近更新 更多