我是php的新手,在尝试将网站从asp转换为php的过程中。 asp站点使用ms访问数据库,新站点将使用mysql。
我正在尝试根据表字段中的不同名称生成表单中的下拉列表。显示的页面显示了该框,并没有给我任何错误消息,但表格列表没有填充,尽管我知道有几个合格的名称应该在那里。
这是我的代码:
try {
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname;", $username, $password);
$sql = $dbh->prepare("SELECT DISTINCT city FROM TABLE 1 WHERE state = :state1 ORDER BY city ASC");
$sql->execute(array(':state1' => $state1));
echo '<form method="get" action="city.php" name="search"> ';
echo '<input type="hidden" name="county" value="' . $state1 . '">';
echo '<select name="city">';
foreach($sql as $row) {
echo '<option value="'. $row['city'] . '">'. $row['city'] . '</option>';
}
echo '</select>';
echo '<input type="submit" name="go" value="Go"> ';
echo '</form>';
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
有人可以告诉我,我的代码中是否有明显错误以及我哪里出错了?
结果可以在测试页面上看到:HOW TO: Install Memcache on XAMPP (Windows 7/8/10)
非常感谢,
Tog Porter
答案 0 :(得分:1)
问题是,您正在执行查询但是您没有捕获结果集。使用fetchAll()
将整个结果集行捕获为数组并循环遍历它,如下所示:
// your code
$sql->execute(array(':state1' => $state1));
$result = $sql->fetchAll();
echo '<form method="get" action="city.php" name="search"> ';
echo '<input type="hidden" name="county" value="' . $state1 . '">';
echo '<select name="city">';
while($row = array_shift($result)){
echo '<option value="'. $row['city'] . '">'. $row['city'] . '</option>';
}
echo '</select>';
// your code
以下是相关参考资料: