0

我正在使用 PHP 脚本从 Android 访问 MySQL 数据库,并且正在使用 JSON 解析返回的值。它工作正常。我的问题是关于 MySQL 的。

我有两个名为的表countrygeography它们的结构如下。

国家表有这些列:

country_id* | country_name  and 20 more column...

地理表有这些列:

geography_id* | location   and 15-20 more column...

(*) 表示主键

<?php

 //some connection properties here....

// PHP variable to store the result of the PHP function 'mysql_connect()' which establishes the PHP & MySQL connection  
 $db_con = mysql_connect($db_host,$db_uid,$db_pass) or die('could not connect');
 mysql_select_db($db_name);

$sql = "SELECT * FROM countries, geography WHERE country_id = '". $_POST["COUNTRY_ID"]."'";
 $result = mysql_query($sql);
 while($row=mysql_fetch_assoc($result))
  $output[]=$row;
 print(json_encode($output));
 mysql_close();   
?>

运行此脚本后返回不需要的值。假设,当我请求country_id = 1JSON 时返回表的所有行geography。我只想检索geography_id=1' 行。我必须使用外键来解决我的问题。还是另一种方式?

4

1 回答 1

1

geography您最好的选择是通过添加列country_id(或类似的东西)向(可能)您的表添加外键:

该列将包含它在countries表中引用的国家/地区的 ID。然后您的查询将如下所示:

"SELECT *
FROM `geography`
INNER JOIN `countries` on geography.country_id = countries.country_id
WHERE geography.country_id = {$_POST["COUNTRY_ID"]}";

有关连接的更多信息,请查看此处 - 这是我读过的最好的文章之一:http ://www.sitepoint.com/understanding-sql-joins-mysql-database/

于 2013-04-07T23:00:19.670 回答