【发布时间】:2016-05-16 21:19:26
【问题描述】:
我无法从填充了选择选项的表单更新数据库。 这是我用 MSSQL 数据库中的值填充更新表单的代码:
$result = $pdo->prepare("SELECT d.id as iddr, d.EGN, d.Names, d.NickName, d.Residence, d.PersonalMobilePhone, d.HomeAddress,d.GarantPerson, c.id as cid, c.city_name, c.post_code, t.id, t.IdDriver, t.StartDateVisa, t.EndDateVisa FROM paerp.dbo.Driver d FULL JOIN paerp.dbo.cities c ON d.Residence = c.id FULL JOIN dbo.TrVisas t ON d.id = t.IdDriver WHERE d.id = :id");
$result->bindParam(':id', $id, PDO::PARAM_STR);
$result->execute();
//for($i=0; $row = $result->fetch(); $i++){
while($row=$result->fetch(PDO::FETCH_ASSOC)){
?>
这是选择选项的地方。这仅显示来自数据库的值。不可能从下拉列表中更改。
<select id="residence" name="residence">
<option value="<?PHP echo $row['id']; ?>" selected><?PHP echo $row['city_name']; ?></option>
<?PHP
$result2 = $pdo->prepare("SELECT id, city_name, post_code FROM cities");
$result2->execute();
while($row=$result2->fetch(PDO::FETCH_ASSOC)){
?>
<option value="<?PHP echo $row['id']; ?>"><?PHP echo $row['city_name']; ?></option> <?php
}
?>
</select>
在该选择选项之后我有更多输入,但它们没有填充数据库中的值。一切都停在这个下拉列表中。
同一个人可以帮助我找出正确的方法吗?谢谢!
我尝试用 foreach 代替第二个 while ,但随后表单输入被填充但下拉菜单不起作用。
【问题讨论】:
-
第一个查询是否预期只有一个结果?如果它返回更多,您将在这里遇到一些冲突 - 首先会有未提取的行可能导致“命令不同步”错误,其次,您对两个提取操作使用相同的变量名称
$row,因此外部 @ 987654326@循环里面会被覆盖。 -
始终在开发代码时,确保 PHP 显示错误,以便我们可以看到还有什么问题。在代码顶部
error_reporting(E_ALL); ini_set('display_errors', 1);。此外,设置您的 PDO 连接以引发异常。$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);之前使用它来prepare()第一个语句。 -
Michael Berkowski,您关于重复名称
$row的建议已修复,我更改了名称,现在可以正常工作了。谢谢你。我如何标记您的回答意见?