Php 在while循环中访问连接变量

Php 在while循环中访问连接变量,php,Php,当我运行while循环时,我试图访问我的连接变量,但是当我试图调用一个函数时,它对我来说是假的,当我试图在函数中准备语句时,PHP给了我所谓的布尔错误 我对它进行了调试,知道变量$CategorieId正在被推送,当我在函数本身中执行print\r时,我确实得到了$con的数组返回。然而,当我在准备语句时尝试访问它时,它只返回一个布尔值,从而在下拉列表中创建错误,无法填充它 设置如下所示 dbControl.php functionControl.php Blogedit.php 有人知道我怎么

当我运行while循环时,我试图访问我的连接变量,但是当我试图调用一个函数时,它对我来说是假的,当我试图在函数中准备语句时,PHP给了我所谓的布尔错误

我对它进行了调试,知道变量$CategorieId正在被推送,当我在函数本身中执行print\r时,我确实得到了$con的数组返回。然而,当我在准备语句时尝试访问它时,它只返回一个布尔值,从而在下拉列表中创建错误,无法填充它

设置如下所示

dbControl.php

functionControl.php

Blogedit.php

有人知道我怎么解决吗?我尝试使用全局变量OpenConnection函数,但它似乎不起作用

编辑

我确认它确实与$con变量有关。我通过在函数中再次定义$con变量来测试它,它完美地打印了我想要的内容。这是一个糟糕的解决方案。我只想定义一次


奇怪的是,只有当我把它放在一个while循环中时,它才会发生。我有一个完全相同的create表单,除了没有while循环,因为我从头开始创建它,并且该部分没有涉及PHP。我还有一个下拉函数,它也需要$con变量,但在那里它可以工作。我真的认为这与while循环有关。

在启动检索信息的页面的prepared语句之前,我通过创建连接变量的新实例,暂时解决了这个问题

 <?php  
        $connection = $con;  
        $a = $_GET['a'];
        $sql = "SELECT blog.blogId,
                       blog.blogTitel,
                       blog.blogCategorieId,
                       blog.blogSynopsis,
                       blog.blogInhoud
                FROM   blog
                WHERE  blog.blogId = ? ";
        mysqli_stmt_init($con);     
        $stmt1 = mysqli_prepare($con, $sql);
        mysqli_stmt_bind_param($stmt1,'i',$a);
        mysqli_stmt_execute($stmt1);
        mysqli_stmt_bind_result($stmt1, $blogId, $Titel, $CategorieId, $Synopsis, $Inhoud );
        mysqli_stmt_store_result($stmt1); 

        while (mysqli_stmt_fetch($stmt1)){      
            $Synopsis = str_replace('\r\n','', $Synopsis);
            $Inhoud = str_replace('\r\n','', $Inhoud);



       <?php dropdownBlogtypeFilledIn($connection ,$CategorieId); ?>
    ?>

通过变量$connection,我可以在while调用中启动需要连接详细信息的函数。我不确定这里是否有更干净的选项,但实际上我在某个地方读到,如果我已经在准备好的语句中使用了相同的连接变量,我就不能使用它。显然,我不能使用相同的连接变量来处理这个问题,这似乎就是问题所在。我将对此进行研究,希望每当我有多个下拉列表(例如从数据库中提取信息)时,我不必编写一堆连接变量。

尝试将$con=mysqli\u connect。。。在你的OpenConnection函数中,或者干脆完全去掉这个函数,继续使用你的include。这是我也尝试过的,但遗憾的是没有用。谢谢:我会这么做的。我纠正了我代码中的一个输入错误,看来PHP今天非常宽容,因为它执行了这个函数。归根结底,$con变量在while循环开始时就消失了。我想知道mysqli是否清除了任何其他定义的变量,或者我也必须在while循环中定义con变量。它只从mysqli_stmt_bind_result将准备好的语句中的结果提取到绑定变量中,并检查其是否为true、false或null。与此无关。
function dropdownBlogtypeFilledin($con,$CategorieId){
    echo "<select name='categorie' class='dropdown form-control'>";     
    $sql = "SELECT categorieId, categorieNaam 
            FROM categorie"; 
    $stmt1 = mysqli_prepare($con, $sql);            
    mysqli_stmt_execute($stmt1);
    mysqli_stmt_bind_result($stmt1,$categorieId,$categorieNaam);          
    while (mysqli_stmt_fetch($stmt1)){
        echo "<option value='".$categorieId."'.";
        if( $categorieId == $CategorieId){
                echo "selected='selected'";
                }            
        echo ">".$categorieNaam."</option>";
    }
    echo "</select>";
}
<?php 
require_once '../db/dbControl.php';
require_once '../db/functionControl.php';

session_start();
OpenConnection();   
$id = $_SESSION['user'];    
?>

// some html up to the while loop

<?php
        $a = $_GET['a'];
        $sql = "SELECT blog.blogId,
                       blog.blogTitel,
                       blog.blogCategorieId,
                       blog.blogSynopsis,
                       blog.blogInhoud
                FROM   blog
                WHERE  blog.blogId = ? ";
        $stmt1 = mysqli_prepare($con, $sql);
        mysqli_stmt_bind_param($stmt1,'i',$a);
        mysqli_stmt_execute($stmt1);
        mysqli_stmt_bind_result($stmt1, $blogId, $Titel, $CategorieId, $Synopsis, $Inhoud );

        while (mysqli_stmt_fetch($stmt1)){      
            $Synopsis = str_replace('\r\n','', $Synopsis);
            $Inhoud = str_replace('\r\n','', $Inhoud);  
    ?>

    // again some HTML

     <?php dropdownBlogtypeFilledIn($con,$CategorieId); ?>

    // guess what, more html!

<?php   
    }
?>
 <?php  
        $connection = $con;  
        $a = $_GET['a'];
        $sql = "SELECT blog.blogId,
                       blog.blogTitel,
                       blog.blogCategorieId,
                       blog.blogSynopsis,
                       blog.blogInhoud
                FROM   blog
                WHERE  blog.blogId = ? ";
        mysqli_stmt_init($con);     
        $stmt1 = mysqli_prepare($con, $sql);
        mysqli_stmt_bind_param($stmt1,'i',$a);
        mysqli_stmt_execute($stmt1);
        mysqli_stmt_bind_result($stmt1, $blogId, $Titel, $CategorieId, $Synopsis, $Inhoud );
        mysqli_stmt_store_result($stmt1); 

        while (mysqli_stmt_fetch($stmt1)){      
            $Synopsis = str_replace('\r\n','', $Synopsis);
            $Inhoud = str_replace('\r\n','', $Inhoud);



       <?php dropdownBlogtypeFilledIn($connection ,$CategorieId); ?>
    ?>