来自数据库的数据未显示

时间:2016-01-03 13:10:09

标签: php mysql

我是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">&nbsp;&nbsp;';
echo '</form>';

     $dbh = null;
        }
        catch(PDOException $e)
        {
        echo $e->getMessage();
        }

有人可以告诉我,我的代码中是否有明显错误以及我哪里出错了?

结果可以在测试页面上看到:HOW TO: Install Memcache on XAMPP (Windows 7/8/10)

非常感谢,

Tog Porter

1 个答案:

答案 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

以下是相关参考资料: