Php 使用ajax从mysql表检索数据
我正在尝试使用Ajax显示MySQL数据。不幸的是,我找不到正确的方法。我试图在一个选择框上显示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
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 );
?>