PHP注意:未定义变量:conn in
您好,我很确定他们在同一范围内,我不确定为什么我现在得到这个错误,因为它是以前的工作 这些是与相同文件夹中的其他文件 php文件: dbh.php recipeLookUp.php 我得到的错误是第9行 这是recipeLookUp.phpPHP注意:未定义变量: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
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);
}
?>