Php 无法访问从PDO查询获取的数据
我试图从我的数据库中创建一个带有选项类型的下拉列表。例如,如果我的数据库中有喜剧、惊悚片和动作片,这些类型将作为下拉列表中的选项提供。基本上,我得到的是一个没有选项的空白列表,我想知道我的代码是否有任何问题。提前谢谢Php 无法访问从PDO查询获取的数据,php,drop-down-menu,foreach,Php,Drop Down Menu,Foreach,我试图从我的数据库中创建一个带有选项类型的下拉列表。例如,如果我的数据库中有喜剧、惊悚片和动作片,这些类型将作为下拉列表中的选项提供。基本上,我得到的是一个没有选项的空白列表,我想知道我的代码是否有任何问题。提前谢谢 <?php $sql = 'SELECT DISTINCT Genre.name FROM (Genre JOIN Movie2Genre ON Genre.id = Movie2Genre.idGenre)'; $stmt = $db3->prepa
<?php
$sql = 'SELECT DISTINCT Genre.name FROM (Genre JOIN Movie2Genre ON Genre.id = Movie2Genre.idGenre)';
$stmt = $db3->prepare($sql);
$stmt->execute();
$allGenre = $stmt->fetchAll();
echo "<select>";
foreach ($allGenre as $val){
echo "<option value='{$val["name"]}'>{$val["name"]}</option>";
}
echo "</select>";
?>
根据您当前的代码,我们可以声明 您没有使用$GREEP执行任何操作-您正在输出元素 可能没有任何类型,即未设置$GREEN
如果1是真的,考虑将$类型的爆炸/加入值放在封闭的标签中。
如果为2,则选择将为空。因为您的问题不包括输出select的特定代码,所以很难说真正的问题是什么。您的问题指出我无法选择drop,因此可能会有JavaScript更改if any output select的enabled属性。正如您使用设置默认获取模式时所显示的那样。因此,您可以将数据作为对象而不是通常的数组来获取,如下所示:$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
还有一个引用,其中说明了默认模式:
PDO::FETCH_BOTH default:返回一个数组,该数组按结果集中返回的列名和0索引的列号进行索引
因此,与此结构不同:
Array
(
[0] => Array
(
[id] => 1
[0] => 1
[number] => 3234
[1] => 3234
[text] => sdfdsf
[2] => sdfdsf
[texttext] => sdfsdf
[3] => sdfsdf
)
//...
您的结构如下所示:
Array
(
[0] => stdClass Object
(
[id] => 1
[number] => 3234
[text] => sdfdsf
[texttext] => sdfsdf
)
//...
$val->name
因此,您需要使用访问对象属性,如下所示:
Array
(
[0] => stdClass Object
(
[id] => 1
[number] => 3234
[text] => sdfdsf
[texttext] => sdfsdf
)
//...
$val->name
旁注:
另外,如果您只在登台时添加,而不在生产中添加!:
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
?>
然后,您还可以将数据库内容放入块中以捕获异常:
try {
//db stuff
} catch(PDOException) {
echo $e->getMessage();
}
你的问题是?它是否工作?基本上它不会在下拉列表中显示任何内容。所以我想知道我的代码是否有问题。很抱歉没有在代码上面写任何注释。我是stackoverflow x的新手,所以我不知道如何添加注释。是^^这是正确的。在我的数据库连接文件中,我有$db3->setAttributePDO::ATTR_DEFAULT_FETCH_模式,PDO::FETCH_OBJ;获取可能导致问题的对象。很抱歉让您感到困惑。当我说我不能选择时,实际上我的意思是没有显示任何选项:=$GREEN不是空的,因为我在我的站点的其他地方使用了完全相同的SQL子句。