доступ к переменной соединения в цикле while

0

Я пытаюсь Acces своего переменного соединения в то время как я бег while цикл, но когда я пытаюсь вызвать функцию, она поддельная на меня и PHP дает мне так называемое булево ошибку, когда я пытаюсь подготовить свое выступление в рамках функции.

Я отлаживал его до такой степени, что я знаю, что моя переменная $CategorieId нажимается, и я получаю возвращаемый массив $con при выполнении print_r в самой функции. Однако, когда я пытаюсь получить его, когда я готовлю свое утверждение, он просто возвращает мне boolean, создавая таким образом ошибку в раскрывающемся списке, не имея возможности ее заполнить.

Настройка выполняется следующим образом.

dbControl.php

$con = mysqli_connect('localhost','root','','jellysite') or die("Error " . mysqli_error($con));  

function OpenConnection(){
    global $con;
    if (!$con){
        die('Er kan geen verbinding met de server of met de database worden gemaakt!');
    }
}

functionControl.php

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>";
}

Blogedit.php

<?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   
    }
?>

Кто-нибудь знает, как я могу это решить? Я попробовал его с глобальной переменной (OpenConnection()), но она, похоже, не работала.

редактировать

Я подтверждаю, что это действительно связано с переменной $ con. Я тестировал его, снова определяя переменную $ con в этой функции, и она отлично печатала то, что я хотел. Это плохие решения. Я просто предпочитаю, чтобы он определил один раз.

Странно то, что это происходит, только когда я помещаю его в цикл while. У меня есть форма создания, которая точно такая же, за исключением того, что цикл while отсутствует, так как я создаю все это с нуля, и в этой части нет PHP. У меня есть функция выпадающего списка, которая также требует переменную $con, но там она работает. Я действительно думаю, что это связано с циклом while.

Теги:

1 ответ

0
Лучший ответ

Я решил это на данный момент, создав новый экземпляр переменной соединения, прежде чем я запустил подготовленный оператор страницы для получения информации.

 <?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 я мог бы инициировать функцию, которая требовала детали соединения во время вызова. Я не уверен, есть ли здесь более чистый вариант, но я действительно где-то читал, что не могу использовать одну и ту же переменную соединения, если я уже использую ее в подготовленном заявлении. Я, видимо, не могу использовать эту одну и ту же переменную соединения, и это, казалось, проблема. Я посмотрю на это и надеюсь, что мне не нужно писать кучу переменных соединения, когда у меня есть несколько выпадающих меню, например, которые извлекают информацию из базы данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню