PHP注意:未定义的变量:conn in

时间:2019-01-16 22:54:19

标签: php mysqli

您好,我很确定它们在相同的范围内,并且不确定为什么现在像以前那样出现此错误。

这些是与该文件夹相同的其他文件  php文件:

dbh.php recipeLookUp.php

我在第9行收到错误消息 这是recipeLookUp.php

<?php

    function lookup($sql,$column_name){

        $results_search=array();

        include_once 'dbh.php';

        $results=mysqli_query($conn,$sql);
        $resultsCheck = mysqli_num_rows($results);
        if ($resultsCheck > 0) {
            while ($row = mysqli_fetch_assoc($results)){
                $info= $row[$column_name];
                $results_search[]=$info;
            }
            return $results_search;
        }
    }

这是我的另一个文件

<?php

$dbServername = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'Recipe';

$conn = mysqli_connect($dbServername,$dbUsername,$dbPassword,$dbName);

我肯定它可能有点小东西,但我找不到它,请帮忙!

1 个答案:

答案 0 :(得分:-1)

您的函数中的include_once 'dbh.php'; 似乎很混乱。如果您还需要执行SQL查询的其他功能,该怎么办?

相反,我会将include_once 'dbh.php';放在函数的上方(上方),也许使用require_once而不是include once。然后在函数内部,将global $conn;放在mysqli_query调用上方,以便将$conn变量传递到mysqli_query时在其中定义。

但是,如果您担心创建不必要的SQL连接(例如,如果从未真正调用过lookup函数),我认为将其放入dbh.php会更好: >

<?php

$conn = null;

function Query($sql)
{
    global $conn;   
    if (!$conn) // will only connect if connection does not exist yet
    {
        $dbServername = 'localhost';
        $dbUsername = 'root';
        $dbPassword = 'xxxxxxxxxxx';
        $dbName = 'Recipe';
        $conn = mysqli_connect($dbServername,$dbUsername,$dbPassword,$dbName);
    }
    return mysqli_query($conn,$sql);
}

?>

现在,在您的主PHP文件或包含require_once 'dbh.php';的任何PHP文件中,您都可以直接使用Query($sql)来执行查询,这将处理连接本身(并且只有在必要)。