Php 将mysql转换为mysqli时出现数据库连接问题

Php 将mysql转换为mysqli时出现数据库连接问题,php,include,mysqli,Php,Include,Mysqli,好的,我正在努力将我的网站更新到mysqli,我在DB连接的DB.php include上遇到了困难 所以我的db.php看起来像这样 <?php $username="usern"; $server="server"; $password="pwd"; $database="db"; //MySQLi methods $mysqli = new mysqli($server, $username, $password, $database) or trigger_error ( my

好的,我正在努力将我的网站更新到mysqli,我在DB连接的DB.php include上遇到了困难

所以我的db.php看起来像这样

<?php
$username="usern";
$server="server";
$password="pwd";
$database="db";

//MySQLi methods
$mysqli = new mysqli($server, $username, $password, $database)  or trigger_error ( mysqli_connect_errno().mysqli_connect_error() );
?>

注意:sql错误输出用于调试我知道输出sql和详细错误不是好做法;)

不管怎样,这样就行了

将db.php文件更新到mysqli后,所有使用该文件的页面都会出现问题。基本上,即使使用include,第21行的\display_functions.php中的mysqli也会出现以下错误致命错误:在第21行的r\includes\display_functions.php中对非对象调用成员函数query()

该文件的相关部分为:

function showConfig ($configID)
{
    date_default_timezone_set('America/Denver');
    require_once($_SERVER["DOCUMENT_ROOT"] . "/includes/DB.php");
    $tbl_name="avr";
    // Get information from DB for display    
    $configQuery="SELECT * FROM $tbl_name WHERE configID=$configID";
    $configResult=$mysqli->query($configQuery);
  <some more code>
}
函数showConfig($configID)
{
日期默认时区设置(“美国/丹佛”);
需要一次($_SERVER[“DOCUMENT_ROOT”]。“/includes/DB.php”);
$tbl_name=“avr”;
//从数据库中获取用于显示的信息
$configQuery=“从$tbl\U名称中选择*,其中configID=$configID”;
$configResult=$mysqli->query($configQuery);
}
当这一切都是mysql时,它起作用了,现在它不起作用了,我真的不知道为什么。我原以为include语句应该包含注意到的文件中的所有内容,但使这个函数(以及其他类似函数)工作的唯一方法是基本上将DB.php的内容放在函数中。这当然是一种可怕的做法


另外,我还在学习这一切,所以请原谅这个无知的问题,但这只是本周末时区更改的一个问题,我如何设置默认时区函数,这样我就不必把它放在所有内容中?

函数中的$mysqli具有本地范围。这不是同一个变量。您需要将$mysqli作为参数传递

function showConfig ($configID, $mysqli)
或者在函数内部使用全局声明

function showConfig ($configID)
{
    global $mysqli;

那么,使用require_,我只需要把它放在调用这个函数的任何页面上,它就会被传递?这是什么改变了,还是我一直在做错事?谢谢是的,我在一个单独的文件中有我的db连接定义,并且我有它所需要的。我只是把它作为参数传递到我需要的任何函数中。事实上,我有一些非常复杂的查询,所以我在一个文件中有我的查询,在另一个名为query_builder的文件中有我的函数(需要查询文件),然后我需要query_builder文件到我需要运行它们的任何页面。谢谢,我实际上是指将sql连接变量传递到函数中。在mysql中,我不必这样做,所以我想知道这是否是mysqli中的一个变化,或者我以前可以这样做,我只是以一种奇怪的方式绕过了它。目前,我的所有插入内容都保存在一个单独的文件中,现在正在将我的查询移动到一个单独的文件中。该方法运行良好,达到了预期目的,但仍有很多优化工作要做。再次感谢:)