我有一个包含字段id
、username
、user_sex
、user_city
的表users
。在列user_sex
和user_city
中,我保存int值1 ... n
。
还有另外两个表user_sex
,表中有字段user_id
、male
和female
,表cities
字段city_id
和city_name
。
现在,我希望当用户打开他的配置文件时能够编辑它,但我不能填充字段。字段是sex
字段的单选按钮,是城市的下拉按钮。
<div class="form-group">
<div class="col-md-6">
<label class="radio-inline" for="radios-0">
<input type="radio" name="user_sex" id="radios-0" value="1">
Male
</label>
<label class="radio-inline" for="radios-1">
<input type="radio" name="user_sex" id="radios-1" value="2">
Female
</label>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label" for="selectbasic">City</label>
<div class="col-md-4">
<select id="selectbasic" name="selectbasic" class="form-control">
<option value="">Choose your city</option>
</select>
</div>
</div>
我希望从用户表中填充这些字段。
这是我上面解释的SQL Fiddle。
注意:由于某些原因,当我在phpmyadmin中执行该查询时,该查询不会返回任何内容
更新:
$result = $pdo->prepare("
SELECT *, userSex.*, city.*
FROM users usr
JOIN user_sex userSex ON usr.user_sex = userSex.user_id
JOIN cities city ON usr.user_city = city.city_id
WHERE id =?
LIMIT 1");
$result -> bindParam(1, $id, PDO::PARAM_INT);
$result -> execute();
foreach ( $result as $row )
{
echo '<legend><strong><i>'.$row['username'].'</i></strong></legend>
<div class="form-group">
<div class="col-md-6">
<label class="radio-inline" for="radios-0">
<input type="radio" name="user_sex" id="radios-0" value="1">
Male
</label>
<label class="radio-inline" for="radios-1">
<input type="radio" name="user_sex" id="radios-1" value="2">
Female
</label>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label" for="selectbasic">City</label>
<div class="col-md-4">
<select id="selectbasic" name="selectbasic" class="form-control">
<option value="">Choose your city</option>
</select>
</div>
</div>';
}
到目前为止。这是一张空白页。正如我所说,我不知道如何填写表格。
如果我做一个简单的查询,比如:SELECT * FROM users WHERE id = 1
,我就得到了正确的$row['username']
。所以我认为问题出在查询上。
Query没有返回,因为您正在将usr.user_sex加入到用户id中。在下面找到工作的:
SELECT usr.*, userSex.*, city.*
FROM users usr
JOIN user_sex userSex
ON usr.id = userSex.user_id
JOIN cities city
ON usr.user_city = city.city_id
WHERE id = 1
要检查单选按钮,可以使用"checked"属性。一个简单的检查性别是否等于1或2应该做。
因此:
$sex = $row['user_sex'];
$maleChecked = ($sex == 1) ? "checked" : "";
$femaleChecked = ($sex == 2) ? "checked" : "";
<radio name="sex" value="1" $maleChecked >
<radio name="sex" value="2" $femaleChecked >
您的查询返回布尔值false请参阅:PHP PDO获取返回false
所以不是
$result -> bindParam(1, $id, PDO::PARAM_INT);
请使用以下代码:
$id = 1;
$result -> bindParam(intval($id), $id, PDO::PARAM_INT);
然后你可以玩你的结果,比如fetch data$result->fetch();etc