为什么我的文本框没有用查询结果更新

Why are my textboxes not updated with results from query

本文关键字:查询 结果 更新 有用 我的 文本 为什么      更新时间:2023-09-26

在我正在使用的书的章节末尾自学PHP使用问题,以学习如何应用每一章的方法。创建了一个html页面,该页面接受用户输入的汽车id,单击按钮,该汽车的信息就会显示在文本框中。我搜索了很多文档、SO和网络,但根据我目前的学习晴雨表,找不到我想要的方法。使用phpexplode()方法行得通吗?还是使用ajax/json做得更好?

当我点击搜索时,文本框中没有填充任何内容,所以如果有人能教我做错了什么,以及我需要在哪里修复代码,那将是非常棒的。谢谢

<?php
$host = "localhost";
$dbname = "car_search_db";
$user = "pontiac";
$password = "Race_Day!";
try {
    $db = new PDO("mysql:dbname=$dbname;host=$host",$user,$password);
}
catch (PDOException $e) {
    $error_message = $e->getMessage();
    include ('error.php');
    exit();
}   
$car_ID = isset($_GET['car_ID']) ? $_POST['car_ID'] : '';
if($car_ID == "")
    die("Invalid input");
$query = 'SELECT carID, make, model, year FROM fastCars
          WHERE carID = :car_ID';         
$statement = $db->prepare($query);
$statement->bindValue(':car_ID', $car_ID); 
$statement->execute();
$cars = $statement->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($cars);
echo $json;
?>
<!DOCTYPE html>
<head>
<title>Fast Car Page</title>
<link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>
<script type="text/javascript">
function queryCars() {
    //get user input
    var id = document.getElementById('car_ID').value;
    //create a query string
    var queryString = "?car_ID=" + car_ID;
    //create XMLHTTP Request
    var ajaxRequest;
    try {
        ajaxRequest = new XMLHttpRequest;
    }catch(e) {
        //IE Browsers
        try {
            ajaxRequest = new ActiveXobjectect("Msxml2.XMLHTTP");
            } catch (e) {
                try{
                    ajaxRequest = new ActiveXobjectect("Microsoft.XMLHTTP");
                } catch (e){
                    // Something went wrong
                    alert("Browser not compatible");
                    return false;
                }
            }
    }
    //create ajax function that processes server response
     ajaxRequest.onreadystatechange = function() {
        if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
            var object = JSON.parse(xmlhttp.responseText);
            document.getElementById('car_id').value = object[0].car_ID;
            document.getElementById('make').value = object[1].make;
            document.getElementById('model').value = object[2].model;
            document.getElementById('year').value = object[3].year;         
        }
    };
            //execute the query
            xmlhttp.open("POST", "car_search.php" + queryString, true);
            xmlhttp.send();
}

</script> 
<header><h1>Fast Car Lookup - Search & Split</h1></header>
<br>
<h2>Search for a car info by ID</h2>
<br>
<form action="car_search.php" method="get">
<label>StudentID:</label>
<input type="text" id="id" name="car_ID">
<br>
<br>
<input type="button"  onclick="queryCars();" value="Search" id="get_info">
<h2>information will be displayed in the textboxes below for the car ID chosen:</h2>
<br>
<table id="outuput">
<tr>
    <td><label>Car ID:</label></td>
    <td><input type="text" id="car_ID" value="" readonly></td>
</tr>
<tr>
    <td><label>Make:</label></td>
    <td><input type="text" id="make" value="" readonly></td>
</tr>    
<tr>
    <td><label>Model:</label></td>
    <td><input type="text" id="model" value="" readonly></td>
</tr>
<tr>
    <td><label>Year:</label></td>
    <td><input type="text" id="" value="" readonly></td>
</tr>
<br>
</table>
</form>
<a href="index.htm">Back to first page</a>
</body>
</html>

您在此处绑定了错误的变量:

$statement->bindValue(':car_ID', $student_ID);

应该是

$statement->bindValue(':car_ID', $car_ID);

同样,您在php中使用post,但car id在查询字符串中——应该在php中用GET。