Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法访问从PDO查询获取的数据_Php_Drop Down Menu_Foreach - Fatal编程技术网

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子句。