自我教学自己PHP使用本书章节末尾的问题我正在学习如何应用每章的方法。创建了一个html页面,接受用户输入的汽车ID,点击一个按钮,该汽车的信息显示在文本框中。我搜索了很多文档,SO和网络,根据我目前的学习晴雨表找不到我正在寻找的方法。使用php explode()方法工作还是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>
答案 0 :(得分:1)
你绑定了错误的变量:
$statement->bindValue(':car_ID', $student_ID);
应该是
$statement->bindValue(':car_ID', $car_ID);
你也在你的php中使用post但是car id在查询字符串中 - 应该在php中使用GET。