取得&显示数据库中的数据(Javascript XML HTTP Request)

时间:2017-03-22 00:32:55

标签: javascript php mysql

我真的在为我的课程挣扎这项任务,并希望有人不介意帮助或只是在这里提供指导。基本上我正在尝试创建一个简单的Javascript XML Http请求,以便在html页面中的数据库中显示基本信息(country_name& country_capital字段)。下面我只是描述指南中的明显阶段,以及我所做的事情。

首先,'database.html'页面包含javascript XHR代码,我认为这些代码大部分都是正确的,但可能有错误。说实话,除了以某种方式引用getcountries.php文件之外,我不能100%确定它还能做什么。

其次,getcountries.php文件是我真正挣扎的地方,因为我从未在PHP中编码。我认为它应该从本地服务器(我正在运行XAMPP)获取数据并在网页上回显结果。

phpMyAdmin上的数据库很简单,只有一个国家表格,包括主键ID号,国家名称,资本和货币,详情如下: 数据库名称= countries_db 表名= countries_table 表字段: country_ID(主键) 国家的名字 country_capital country_currency 一个例子:2,美国,华盛顿特区,美元

总而言之,我的问题是:如何编辑我为正确从数据库中获取数据并将其显示在页面上所做的工作?

非常感谢这里的任何帮助或建议,非常感谢。

<!-- Code on Page 1 (database.html) -->

<p id="txtHint"></p>
<p id="hint"></p>

<script>
function showUser(str) {
	if (str=="") {
		document.getElementById("txtHint").innerHTML="";
		return;
	}
	if (window.XMLHttpRequest) { // detects whether the browser has XMLHttpRequest functionality
	// code for modern browsers
		xmlhttp=new XMLHttpRequest(); // creates an XMLHttpRequest object
	} else { // code for old browsers
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.onreadystatechange=function() { // onreadystatechange defines the function to be called when the readyState property changes
		if (this.readyState==4 && this.status==200) {
			document.getElementById("hint").innerHTML=this.responseText;
		}
	}
	xmlhttp.open("GET","getcountries.php?q="+str,true);
	xmlhttp.send();
}
</script>

<!-- Code on Page 2 (getcountries.php) -->

<?php
$q = intval($_GET['q']);

$con = mysqli_connect('localhost','root','');
if (!$con) {
	die('Could not connect: ' .mysqli_error($con));
}

mysqli_select-db($con,"countries_db");
$sql="SELECT country_name AND country_capital FROM records";
$result = mysqli_query($con,$sql);

echo "Results:"

error_reporting(E_ERROR | E_PARSE);

	\
while($row = mysqli_fetch_array($result)) {
	echo $row['country_name'] . "<br>";
	echo $row['country_capital'] . "<br>";
}
mysqli_close($con);
?>

2 个答案:

答案 0 :(得分:1)

假设这是数据库的结构:

Database name = countries_db 
Table name = countries_table 
Table fields: 
    country_ID (primary key) 
    country_name 
    country_capital 
    country_currency 

问题是你的代码中有一些语法错误改变了这一行:

mysqli_select-db($con,"countries_db");
$sql="SELECT country_name AND country_capital FROM records";

使用:

mysqli_select_db($con,"countries_db");
$sql="SELECT country_name, country_capital FROM countries_table";

替代:使用PDO:

尝试使用此功能代替 getcountries.php 实施

<?php
$driver = 'mysql';
$database = "dbname=countries_db";
$dsn = "$driver:host=localhost;unix_socket=/home/cg/mysql/mysql.sock;$database";

$username = 'root';
$password = 'root';

try {
   $conn = new PDO($dsn, $username, $password);
   echo "<h2>Database countries_db Connected<h2>";
}catch(PDOException $e){
   echo "<h1>" . $e->getMessage() . "</h1>";
}
$sql = 'SELECT country_name, country_capital FROM countries_table';
$stmt = $conn->prepare($sql);
$stmt->execute();

echo "Results:";
echo "<table style='width:100%'>";
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
  echo "<tr>";
  foreach($row as $value)
  {
    echo sprintf("<td>%s</td>", $value);
  }
  echo "</tr>";
}
echo "</table>";
?>

答案 1 :(得分:0)

在getcountries.php中使用mysqli_select_db代替mysqli_select-db

mysqli_select_db($con,"countries_db");