Php 使用ajax从mysql表检索数据

Php 使用ajax从mysql表检索数据,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我正在尝试使用Ajax显示MySQL数据。不幸的是,我找不到正确的方法。我试图在一个选择框上显示MySQL数据。当我点击“选择类别”选项时,所有类别将显示为下拉列表 here is my HTML code. <!DOCTYPE html> <html> <head> <title>PHP MySQL Insert Tutorial</title> <script src='https://code.jquery.com

我正在尝试使用Ajax显示MySQL数据。不幸的是,我找不到正确的方法。我试图在一个选择框上显示MySQL数据。当我点击“选择类别”选项时,所有类别将显示为下拉列表

here is my HTML code.

<!DOCTYPE html>
 <html>
 <head>
 <title>PHP MySQL Insert Tutorial</title>
 <script src='https://code.jquery.com/jquery-2.1.3.min.js'></script>
 </head>

 <body>
 <select id='category'>

 </select>
 <script src='fetch.js'></script>
 </body>
</html>
我用这个JS代码发送请求。这是我的JS代码

$('#category').onclick(function(){
     $.getJSON(
         'fetch.php',

         function(result){
             $('#category').empty();
             $.each(result.result, function(){
             $('#category').append('<option>'+this['category']+'</option>');
             });
         }
     );
});
我已经使用这段php代码完成了ajax请求和数据库连接。这是我的PHP代码

<?php
 define('HOST','localhost');
 define('USERNAME', 'root');
 define('PASSWORD','');
 define('DB','ajax');

 $con = mysqli_connect(HOST,USERNAME,PASSWORD,DB);

 $category = $_GET['category'];

 $sql = "select category from ajaxx where category='$category'";

 $res = mysqli_query($con,$sql);

 $result = array();

 while($row = mysqli_fetch_array($res)){
 array_push($result, 
 array('category'=>$row[0]));
 }

 echo json_encode(array('result'=>$result));


    enter code here

 mysqli_close($con);
?>
<?php
    /*** getcategory.php ***/

    define('HOST','localhost');
    define('USERNAME', 'root');
    define('PASSWORD','');
    define('DB','ajax');

    $con = mysqli_connect(HOST,USERNAME,PASSWORD,DB);

    $category = $_GET['category'];

    $sql = "select category from ajaxx where category='$category'";

    $res = mysqli_query($con,$sql);

    $result = array();

    while($row = mysqli_fetch_array($res)){
    array_push($result, 
    array('category'=>$row[0]));
    }

    echo json_encode(array('result'=>$result));


    enter code here

    mysqli_close($con);
?>

当您发出AJAX请求时,它将发送到以下URL:

fetch.php
但在服务器端代码中,尝试获取查询字符串值:

$category = $_GET['category'];
无法获取从未提供的查询字符串值。因此,当您构建对SQL注入完全开放的SQL查询时,从数据库中无法获得任何信息

如果要使用查询字符串值,必须提供一个:


你提供什么价值或从哪里获得价值取决于你自己。可能来自$category.val?但它必须先存在,然后才能使用。

您可能混淆了两件事:一是最初获取HTML代码以填充控件的选项,二是捕获所选选项并使用它执行另一个DB查询,返回新数据

请查看此修改的未测试代码示例:

<!DOCTYPE html>
 <html>
 <head>
 <title>PHP MySQL Insert Tutorial</title>
 <script src='https://code.jquery.com/jquery-2.1.3.min.js'></script>
 </head>

 <body>
 <select id='category'>

 </select>
 <div id="resultDIV"></div>
 <script src='fetch.js'></script>
 </body>
</html>
javascript/jQuery:

我已经使用这段php代码完成了ajax请求和数据库连接。这是我的PHP代码

<?php
 define('HOST','localhost');
 define('USERNAME', 'root');
 define('PASSWORD','');
 define('DB','ajax');

 $con = mysqli_connect(HOST,USERNAME,PASSWORD,DB);

 $category = $_GET['category'];

 $sql = "select category from ajaxx where category='$category'";

 $res = mysqli_query($con,$sql);

 $result = array();

 while($row = mysqli_fetch_array($res)){
 array_push($result, 
 array('category'=>$row[0]));
 }

 echo json_encode(array('result'=>$result));


    enter code here

 mysqli_close($con);
?>
<?php
    /*** getcategory.php ***/

    define('HOST','localhost');
    define('USERNAME', 'root');
    define('PASSWORD','');
    define('DB','ajax');

    $con = mysqli_connect(HOST,USERNAME,PASSWORD,DB);

    $category = $_GET['category'];

    $sql = "select category from ajaxx where category='$category'";

    $res = mysqli_query($con,$sql);

    $result = array();

    while($row = mysqli_fetch_array($res)){
    array_push($result, 
    array('category'=>$row[0]));
    }

    echo json_encode(array('result'=>$result));


    enter code here

    mysqli_close($con);
?>
下面是一些基本的、简单的AJAX示例,用于研究底部的三个链接,但也要注意第一个链接中的信息。将它们复制到您的服务器并使其正常工作-使用它们:


您的ajax代码需要进行一些更改:

<!DOCTYPE html>
 <html>
 <head>
 <title>PHP MySQL Insert Tutorial</title>
 <script src='https://code.jquery.com/jquery-2.1.3.min.js'></script>
 <script type="text/javascript">
function myAjax ()
{ $.ajax( { type    : 'POST',
            data    : { 'category' : $('#txt_cat').val() }, // SEND CATEGORY.
            url     : 'fetch.php',
            success : function ( result )
                      { $( '#category' ).empty();
                        var arr = JSON.parse( result );
                        var sel = document.getElementById("category");
                        for ( i = 0; i < arr.length; i++ )
                        { var option = document.createElement( "option" );
                          option.text = arr[ i ];
                          sel.add( option );
                        }
                      },
            error   : function ( xhr )
                     { alert( "error" );
                     }
          }
        );
}
 </script>
 </head>
 <body>
   Enter category <input type="text" id="txt_cat"/>
   <button onclick="myAjax()">Click here to fill select</button>
   <select id='category'>
     <option> - empty - </option>
   </select>
 </body>
</html>
fetch.php


特别是在哪里/如何失败?不起作用。。但谢谢你抽出时间。你有更多的空闲时间来解决我的问题吗!我正在单击选择框,但数据库中没有显示任何内容。是否发出了AJAX请求?服务器的响应是什么?您必须至少尝试调试此操作。是否要在页面加载中获取数据?我的意思是,mysql数组是否有可能在不需要刷新的情况下动态更新?$category=$\u GET['category'];通过这段代码,我想从我的数据库的category列中获取值。@HasemUddin:那么您需要从一些PHP入门教程开始,因为$\u get不是连接数据库的方式。这是从请求URL上的查询字符串中获取值的方式。@HasemUddin不要混淆1个类别、select元素的ID、2个类别、通过AJAX传递的变量名称和3个类别表中的字段名称。我甚至没有注意到最重要的逻辑问题,OP试图使用列表的更改事件来填充自己。抢手货注意:未定义的索引:C:\xampp\htdocs\get data ajax\getcategory.php中的category在第11行{result:[]}我在点击后得到了这个通知。是的,可能是这样。这是未经调试的代码,只是为了让您知道该怎么做。首先要尝试的是将getcategory.php文件更改为只包含以下内容:并在$.ajax success函数中取消对警报指令的注释。然后开始添加更多内容。
<?php
$category = $_POST[ "category" ];           // CATEGORY FROM HTML FILE.
// CONNECT TO DATABASE AND QUERY HERE.
$result = Array( "111","222","333","444" );  // SAMPLE DATA.
echo json_encode( $result );
?>