使用两个SQL表获取Javascript的JSON数据

使用两个SQL表获取Javascript的JSON数据,javascript,php,mysql,json,Javascript,Php,Mysql,Json,我使用SQL查询从数据库中获取数据,并将其作为JSON数据返回,以发送到Javascript文件。我使用数据库中的两个不同表进行SQL查询。如何连接这两个表,或者需要使用什么代码将两个表中的数据存储为一个JSON数据发送到Javascript文件 我想返回要在Javascript文件的表中显示的团队名称和省份名称。当我在MySQL Workbench中使用SQL查询时,它会获得正确的数据,但不适用于Teams.php。我想在Javascript文件的Teams列中显示团队名称,在provides

我使用SQL查询从数据库中获取数据,并将其作为JSON数据返回,以发送到Javascript文件。我使用数据库中的两个不同表进行SQL查询。如何连接这两个表,或者需要使用什么代码将两个表中的数据存储为一个JSON数据发送到Javascript文件

我想返回要在Javascript文件的表中显示的团队名称和省份名称。当我在MySQL Workbench中使用SQL查询时,它会获得正确的数据,但不适用于Teams.php。我想在Javascript文件的Teams列中显示团队名称,在provides列中显示省份名称

JSON数据当前将Teams.php中的数据显示为{“Teams”:[{“name”:“Ulster”},{“name”:“Ulster”},{“name”:“Ulster”},{“name”:“Leinster”}]},这是错误的,因为它只显示一个名称,而且它也获取了错误的数据,因为它们是省名

我希望它显示为{“团队”:[{“名称”:“多尼格尔”,“省”:“阿尔斯特”},{“名称”:“德里”,“省”:“阿尔斯特”},{“名称”:“向下”,“省”:“阿尔斯特”},{“名称”:“都柏林”,“省”:“莱斯特”},因为它显示了团队名称和省名

Teams.html

<html>
<head>
<script type="text/javascript" src="Teams.js">
</script>
</head>
<body>
<h2>Teams</h2>
<table>
    <tr>
        <td>Enter team name: <input id="team" type="text" /></td>               
    </tr>
</table>
<hr>
<div id="myDiv"></div>
</body>
</html>

团队
输入团队名称:

Teams.js

var xmlhttp;

window.onload=function(){
    init();
}

function init()
{
    // call getAjaxData() as the user types text 
    document.getElementById("team").onkeyup=function(){
        getAjaxData();
    }
}

function getAjaxData()
{   
    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }   

    // put the text typed into a JavaScript variable 'teamname'
    var teamname=document.getElementById("team").value;
    console.log(teamname);

    xmlhttp.onreadystatechange = showData;
    // make Ajax request using the text typed OR you could first request "Teams.json"
    xmlhttp.open("GET","Teams.php?name="+teamname, true);
    xmlhttp.send(); 
}

function showData()
{
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {           
        var data = JSON.parse(xmlhttp.responseText);        

        // build a html table with the data returned
        var output = '<table border=1>';
        output += '<th>Team</th><th>Province</th>';

        for (var i=0;i<data.teams.length;i++) {         
            output += '<tr><td>'+ data.teams[i].name +'</td><td>' + data.teams[i].province +'</td></tr>';
        }
        output += '</table>';

        // add output to div
        document.getElementById("myDiv").innerHTML=output;
    }
}
var-xmlhttp;
window.onload=function(){
init();
}
函数init()
{
//在用户键入文本时调用getAjaxData()
document.getElementById(“团队”).onkeyup=function(){
getAjaxData();
}
}
函数getAjaxData()
{   
if(window.XMLHttpRequest)
{
xmlhttp=新的XMLHttpRequest();
}
其他的
{
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}   
//将键入的文本放入JavaScript变量“teamname”
var teamname=document.getElementById(“团队”).value;
console.log(团队名称);
xmlhttp.onreadystatechange=showData;
//使用键入的文本发出Ajax请求,或者您可以先请求“Teams.json”
open(“GET”、“Teams.php?name=“+teamname,true”);
xmlhttp.send();
}
函数showData()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{           
var data=JSON.parse(xmlhttp.responseText);
//使用返回的数据构建一个html表
var输出=“”;
输出+=‘团队省’;

对于(var i=0;i@GleneaMan,首先关注SQL查询。您的团队表必须具有省id,以便代表
省id
可以正确使用两个表的联接

其次,您必须相应地操作json数据


在您当前的查询数据中,省份名称与团队数量重复。

@GleneaMan首先关注您的SQL查询。您的团队表必须具有省id,以便代表
省id
您可以正确使用两个表的连接

其次,您必须相应地操作json数据

在当前查询数据中,省份名称与团队数量重复

<?php
$team=$_GET['name'];

$connection = mysqli_connect("localhost","root","");
mysqli_select_db($connection,"gaadb");

// I'd recommend finding just the team names first.
$result = mysqli_query($connection,"SELECT t.name, p.name FROM teams AS t, provinces AS p WHERE p.id = t.province AND t.name like '$team%'");

$rs = array();
$i=0;
while($rs[] = mysqli_fetch_assoc($result)) {
}
mysqli_close($connection);
unset($rs[count($rs)-1]);  //removes a null value
print("{ \"teams\":" . json_encode($rs) . "} ");
?>