说我有以下两个表:
country_table:
---------------------------------
|ID|country_code|country_name |
|01|CA |Canada |
|02|US |United States |
---------------------------------
USER_TABLE:
----------------------------------------------
|id|user_id|country_code|email_address |
|01|oswalsh|CA |blah@hotmail.com |
|02|jlong |US |blah2@hotmail.com |
----------------------------------------------
我正在创建用户注册/编辑帐户表单,并为国家/地区提供下拉列表。最初我只是将country_name存储在user_table中而不是使用country_code,但是我还决定实现一个map脚本......这是一个利用country_code的大量javascript文件。
因此我创建了country_table,因此我可以匹配country_code和country_name,因此我可以映射用户交互...但是我不知道如何为下拉列表创建sql语句。
到目前为止我所拥有的:
<?php
include ('../../connect.php');
$account_panel = mysql_query("SELECT * FROM user_table WHERE id=1")
or die(mysql_error());
while($row1 = mysql_fetch_array( $account_panel ))
{
?>
<select name="event_country" id="event_country" required />
<option selected="selected" value="<?php echo $row1['user_country']; ?>"><?php echo $row1['user_country']; ?></option>
<?php
$countries = mysql_query("SELECT * FROM country_table")
or die(mysql_error());
while($row = mysql_fetch_array( $countries ))
{
echo "<option value='". $row['value'] ."'>". $row['name'] ."</option>";
}
echo "</select>";
?>
<?php
}
mysql_close($connection);
?>
因为您应该能够从上面看到发生了什么,是列表是从country_table填充的,但我试图从用户表中获取所选值。这似乎有效,但我的问题是国家代码是存储和显示的内容。所以说我抓住oswalsh的信息......我...返回的国家是CA,我希望它能显示加拿大。
答案 0 :(得分:1)
如果我理解正确,您需要熟悉SQL Joins
要加入这两个表并获取country_name
以及user_table
中的用户数据,您需要这样的SQL语句:
SELECT ut.*, ct.country_name
FROM user_table ut
INNER JOIN country_table ct
ON ut.country_code = ct.country_code
在您的情况下,这将产生以下结果:
1 oswalsh CA blah@hotmail.com Canada
2 jlong US blah2@hotmail.com United States
此外,您应该考虑使用mysqli_
并停止使用mysql_
功能。这是关于SA的这个主题的discussion。