Undefined variable, which is actually defined

2019-09-20 05:23发布

问题:

I have my $dbConnection variable set at the very top of the page. And I have a contact form included on the same page. The contact form works fine.

However, when submitting, it gives me an undefined error; that's weird because I'm 199% sure I have the variable set correctly.

The form is going through a script.

function ubbreplace($text){
    if (strpos($text, "[contact-form]") !== false) {
       ob_start();
       include("contactform.php");
       $replace = ob_get_contents();
       ob_end_clean();
       $text = str_replace("[contact-form]", $replace, $text);
    }
    return $text;
}

and my guess is that this script prevents the connection from connecting. Is that possible?

I have defined $dbConnection as a global, added these `` to the SQL, etc etc nothing worked. The error goes away while the $dbConnection is defined as a global but does not put the data in the database.

回答1:

Try to make global your $dbConnection inside your function

function ubbreplace($text){
    global $dbConnection;
    if (strpos($text, "[contact-form]") !== false) {
       ob_start();
       include("contactform.php");
       $replace = ob_get_contents();
       ob_end_clean();
       $text = str_replace("[contact-form]", $replace, $text);
    }
    return $text;
}


回答2:

Added global $dbConnection; inside the ob_start()

<?php
function ubbreplace($text){
    if (strpos($text, "[contact-form]") !== false) {
        ob_start();
        global $dbConnection; // <-- added
        include("contactform.php");
        $replace = ob_get_contents();
        ob_end_clean();
        $text = str_replace("[contact-form]", $replace, $text);
    }
    return $text;
}
?>