转换mysql到mysqli时,数据库连接问题


DB connection issues while converting mysql to mysqli

好的,所以我正在努力更新我的网站到mysqli,我有一个困难与db .php包括数据库连接。

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后,所有使用它的页面都有问题。基本上,即使包含我得到以下错误mysqli在'display_functions.php在第21行致命错误:调用成员函数query()在非对象在r'包括'display_functions.php在第21行

该文件的相关部分是:

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>
}

当这是所有的mysql工作,现在它不,我不知道为什么。我认为include语句应该从注意到的文件中引入一切,但使这个函数(和其他类似的)工作的唯一方法是基本上把DB.php的内容放在函数内。这当然是一种糟糕的做法。

也,仍然有点学习所有这些,所以原谅这个无知的问题,但它只是成为一个问题与这个周末的时区变化,我如何设置默认的时区功能,所以我不必把它放在所有的?

函数中的$mysqli具有局部作用域。它不是同一个变量。你需要传递$mysqli作为参数

function showConfig ($configID, $mysqli)

或者在函数

中使用全局声明
function showConfig ($configID)
{
    global $mysqli;