国家下拉列表将 ID 而不是名称(字符串)插入数据库(mysql)
Posted
技术标签:
【中文标题】国家下拉列表将 ID 而不是名称(字符串)插入数据库(mysql)【英文标题】:Country Dropdown list insert ID instead of Name(string) into Database(mysql) 【发布时间】:2017-10-24 04:10:29 【问题描述】:大家好,各位专家,我的网站有问题将 ID 插入我的数据库而不是实际名称本身。
我很困惑,因为它在网页本身上显示的一切都很好(一个正确的名称显示为一个单独的国家、州和城市。
请帮助我确定我的代码中的问题所在。
非常感谢。
这是我的注册页面代码
<div>
<select name="country" class="country">
<option value="<?php echo $row['country_name'] ?>">--Select Country--</option>
<?php
$stmt = $conn->prepare("SELECT * FROM countries");
$stmt->execute();
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
?>
<option value="<?php echo $row['country_id']; ?>"><?php echo $row['country_name']; ?></option>
<?php
?>
</select>
<select name="state" class="state">
<option value="<?php echo $row['state_name'] ?>">--Select State--</option>
</select>
<select name="city" class="city">
<option value="<?php echo $row['city_name'] ?>">--Select City--</option>
</select>
</div>
<input type="submit" name="registration" value="REGISTER">
<input type="reset" value=". . . RESET . . .">
这是另一个从以下字段获取数据的代码
获取状态码
<?php
include('db_conn.php');
if($_POST['id'])
$id=$_POST['id'];
$stmt = $conn->prepare("SELECT * FROM states WHERE country_id=:id");
$stmt->execute(array(':id' => $id));
?><option selected="selected">--Select State--</option><?php
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
?>
<option value="<?php echo $row['state_id']; ?>"><?php echo $row['state_name']; ?></option>
<?php
?>
获取城市
<?php
include('db_conn.php');
if($_POST['id'])
$id=$_POST['id'];
$stmt = $conn->prepare("SELECT * FROM cities WHERE state_id=:id");
$stmt->execute(array(':id' => $id));
?><option selected="selected">--Select City--</option>
<?php while($row=$stmt->fetch(PDO::FETCH_ASSOC))
?>
<option value="<?php echo $row['city_id']; ?>"><?php echo $row['city_name']; ?></option>
<?php
?>
和 Ajax 数据
<?php
//Include database configuration file
include('db_conn.php');
if(isset($_POST["country_id"]) && !empty($_POST["country_id"]))
//Get all state data
$query = $conn->query("SELECT * FROM states WHERE country_id = ".$_POST['country_id']." AND status = 1 ORDER BY state_name ASC");
//Count total number of rows
$rowCount = $query->num_rows;
//Display states list
if($rowCount > 0)
echo '<option value="">Select state</option>';
while($row = $query->fetch_assoc())
echo '<option value="'.$row['state_id'].'">'.$row['state_name'].'</option>';
else
echo '<option value="">State not available</option>';
if(isset($_POST["state_id"]) && !empty($_POST["state_id"]))
//Get all city data
$query = $conn->query("SELECT * FROM cities WHERE state_id = ".$_POST['state_id']." AND status = 1 ORDER BY city_name ASC");
//Count total number of rows
$rowCount = $query->num_rows;
//Display cities list
if($rowCount > 0)
echo '<option value="">Select city</option>';
while($row = $query->fetch_assoc())
echo '<option value="'.$row['city_id'].'">'.$row['city_name'].'</option>';
else
echo '<option value="">City not available</option>';
?>
【问题讨论】:
【参考方案1】:您插入选项值。
echo '<option value="'.$row['city_id'].'">'.$row['city_name'].'</option>';
在本例中为 city_id
如果您想要名称,请将其设置为值:
echo '<option value="'.$row['city_name'].'">'.$row['city_name'].'</option>';
【讨论】:
@ftfm 您好,非常感谢您的回复,您的意思是我必须在我的 Ajax 文件中修复它,对吗?抱歉,我对这个 ajax 和 php 很陌生 =(以上是关于国家下拉列表将 ID 而不是名称(字符串)插入数据库(mysql)的主要内容,如果未能解决你的问题,请参考以下文章