ajax sql 和 PHP 查询数据库并返回结果

ajax sql and PHP query database and return result

本文关键字:返回 结果 数据库 查询 sql PHP ajax      更新时间:2023-09-26

我目前正在尝试使用Ajax查询数据库。我的阿贾克斯如下

function ajaxFunction(){
    var ajaxRequest;  // The variable that makes Ajax possible!
    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Not working");
                return false;
            }
        }
    }
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            document.returnhere.value = ajaxRequest.responseText;
        }
    }
    var datepicker = document.getElementById('datepicker').value;
    var datepicker1 = document.getElementById('datepicker1').value;
    var queryString = "?datepicker=" + datepicker + "&datepicker1=" + datepicker1;
    ajaxRequest.open("GET", "detengde.php" + queryString, true);
    ajaxRequest.send(null); 
}
//-->
</script>

<form name='myForm'>
From: <input  id='datepicker' /> <br />
To: <input  id='datepicker1' />
<br />
    <input type='button' onclick='ajaxFunction()' value='Query MySQL' />
</form>
<div id=returnhere></div>

我的PHP看起来像这样:

    include 'config.php'
$startd = ($_GET['datepicker']);
$endd = ($_GET['datepicker1']);

$sql = "SELECT * FROM delays WHERE Delaytype >= date('".$startd."') AND Delaydate < ADDATE(date('".$endd."'), INTERVAL 1 DAY)";

$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result)) {
do something . ..  ..  . .

此查询适用于 PHP,并将返回位于两个日期范围之间的记录。

我正在努力将 php 输出恢复到我的页面。老实说,当我点击按钮时,很少发生。我对PHP数据库交互很熟悉AJAX是我刚刚开始学习的东西。

请不要关于安全性的消息,我知道这是非常不安全的。

我在这里缺少一些非常基本的东西。经过许多教程,搜索堆叠溢出只是没有点击(没有双关语)

将名称为"returnhere"的字段添加到 HTML 页面。

<input type="text" name="returnhere">

如果我正确阅读了您的代码,ajax 函数的回调应该填写其值。

<?php
include 'config.php';
header('Content-Type: application/json; charset="utf-8"');
$startd = ($_GET['datepicker']);
$endd = ($_GET['datepicker1']);
$sql = "SELECT * FROM delays WHERE Delaytype >= date('".$startd."') AND Delaydate < ADDATE(date('".$endd."'), INTERVAL 1 DAY)";

$result = mysqli_query($con,$sql);
//just an empty array here
$final_array=array();
while($row = mysqli_fetch_array($result)) {
// I am not aware of what is being returned. So I am going to assume its a 'value'
// you can just store the values returned, in an array and echo the array or
// json_encode($array) and echo that
// this will just echo the value for time the loop encounters this statement
echo $row['value'];
//push the element into the array.Beware of overhead caused by array_push()
//if it is a `key-value` pair, its better just to use $final_array[$key] = $value;
array_push($final_array,$row['value']);
}
// Don't forget to set the header before echoing the json
echo json_encode($final_array);
?>

我希望这在一定程度上有所帮助。或者,如果您需要详细信息,请随时在下面发表评论

在你的 JS 中用

document.getElementById("returnhere").value=object.responseText;

document.getElementById("returnhere").innerHTML=object.responseText;

适合您的需求