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

PHP注意:未定义变量:conn in,php,mysqli,Php,Mysqli,您好,我很确定他们在同一范围内,我不确定为什么我现在得到这个错误,因为它是以前的工作 这些是与相同文件夹中的其他文件 php文件: dbh.php recipeLookUp.php 我得到的错误是第9行 这是recipeLookUp.php <?php function lookup($sql,$column_name){ $results_search=array(); include_once 'dbh.php'; $re

您好,我很确定他们在同一范围内,我不确定为什么我现在得到这个错误,因为它是以前的工作

这些是与相同文件夹中的其他文件 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;
        }
    }

这个
包含一次'dbh.php'在您的函数中似乎可疑。如果您还有其他需要执行SQL查询的函数,您会怎么做

相反,我将把
include_放在'dbh.php'中在(以上)功能之外,可能使用
require\u once
而不是
include once
。然后在函数中,放入
global$conn
mysqli\u查询
调用上方,因此当您将
$conn
变量传递给
mysqli\u查询
时,将在此处定义该变量

但是,如果您担心创建不必要的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)
执行查询,这将处理连接本身(并且仅在必要时这样做)。

$conn
在函数
查找
中不可见。我认为这不是问题所在,但我担心
包含一次
。如果在同一个脚本执行中调用了两次lookup,“dbh.php”将不会再次被包含(这是
\u once
部分),因此
$conn
不会再次被定义。您可以尝试用
require
替换
include\u once
我的上一条注释是错误的,因此我删除了它,很抱歉,如果我将您与错误的解决方案混淆了$conn实际上应该在该函数中可见,这意味着函数中正在发生include,您应该尝试Chris Forrence建议的方法,检查dbh.php的包含是否包含在该文件的其他地方谢谢!!!!!全球$conn解决了我的问题。我甚至没有尝试这个,因为我认为我的变量在函数的范围内。
<?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);
}

?>