我的html页面中有一个表单,用于将数据插入数据库。在表单中,我有一些字段的下拉列表。我想从数据库中获取下拉列表的数据。
以下是之前使用的代码(硬编码下拉列表)
<div class="form-group">
<label for="proj_name" class="col-sm-4 control-label">Project Name</label>
<div class="col-sm-8">
<select name="proj_name" id="proj_name" class="form-control" >
<option selected="true" value="" data-hidden="true" style="color:red">Choose Project</option>
<option value="Project1">Project1</option>
<option value="Project2">Project2</option>
<option value="Project3">Project3</option>
<option value="Project4">Project4</option>
</select>
</div>
我正在使用PDO连接数据库。 (也使用表单的bootstrap模板)。现在我想使用项目表中的数据填充这些项目名称。
我正在使用以下代码修改上述内容:
<div class="form-group">
<label for="proj_name" class="col-sm-3 control-label" style="color:red">Project Name</label>
<div class="col-sm-9">
<?php
try
{
$sql = "select proj_id,proj_name from tblProject";
$projresult = $db->query($sql);
$projresult->setFetchMode(PDO::FETCH_ASSOC);
}
catch (PDOException $e)
{
die("Some problem getting data from database !!!" . $e->getMessage());
}
echo '<select name="proj_name" id="proj_name" class="form-control" >';
while ( $row = $projresult->fetch() )
{
echo '<option value="'.$row['proj_name'].'">'.$row['proj_name'].'</option>';
}
echo '</select>';
?>
</div>
</div>
表单是一个bootstrap模式,当我使用这个代码时,我无法打开模态。还不确定代码是否正确用于获取下拉列表的数据。
如果在任何地方出错,请纠正我。我是使用PDO的新手。
欢迎任何建议
答案 0 :(得分:1)
我认为代码本身没有任何问题,但我建议你在你的try / catch中移动你的FETCH调用。
如果FETCH调用失败,此时,您没有在任何地方捕获异常,并且您希望在尝试将其余数据转储到屏幕之前捕获该异常。
编辑: 例如:
try
{
$sql = "select proj_id,proj_name from tblProject";
$projresult = $db->query($sql);
$projresult->setFetchMode(PDO::FETCH_ASSOC);
echo '<select name="proj_name" id="proj_name" class="form-control" >';
while ( $row = $projresult->fetch() )
{
echo '<option value="'.$row['proj_name'].'">'.$row['proj_name'].'</option>';
}
echo '</select>';
}
catch (PDOException $e)
{
die("Some problem getting data from database !!!" . $e->getMessage());
}
我不是百分之百确定这一点,但我相信实际的执行语句不会发生,直到你进行实际的 - &gt; fetch()调用,这意味着如果你的SQL不好或你的服务器连接不好,在此之前不会抛出任何异常,并且您的原始try / catch块会错过它。
答案 1 :(得分:1)
此问题已解决。
问题在于它没有连接到数据库的模态。不知怎的,这阻止了模态的开启。
以下是正确的代码
<div class="form-group">
<label for="proj_id" class="col-sm-3 control-label" style="color:red">Project ID *</label>
<div class="col-sm-9">
<?php
require 'DBconnect.php'; // connect to Database
try
{
$sql = "select proj_id,proj_name from tblProject";
$projresult = $db->query($sql);
$projresult->setFetchMode(PDO::FETCH_ASSOC);
echo '<select name="proj_id" id="proj_id" class="form-control" >';
while ( $row = $projresult->fetch() )
{
echo '<option value="'.$row['proj_id'].'">'.$row['proj_name'].'</option>';
}
echo '</select>';
}
catch (PDOException $e)
{
die("Some problem getting data from database !!!" . $e->getMessage());
}
?>
</div>
</div>
考虑到马克的建议。
DBconnect.php有详细信息可以连接到我的数据库。