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

时间:2013-03-13 21:18:30

标签: php include 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和verbose错误不是好习惯;)

无论如何,这样就可以了。

将db.php文件更新为mysqli后,所有使用该页面的页面都出现问题。基本上即使有包含我在第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>
}

当这是所有的mysql它工作,现在它没有,我不确定为什么。我认为include语句应该引入来自注释文件的所有内容,但是使这个函数(和其他类似函数)工作的唯一方法是将DB.php的内容基本上放在函数中。这当然是一种可怕的做法。

此外,仍然有点学习所有这一切,原谅这个无知的问题,但这只是本周末时区变化的问题,我将如何设置默认时区功能,所以我不必把它放在一切?< / p>

1 个答案:

答案 0 :(得分:0)

函数内的$ mysqli具有本地范围。它不是同一个变量。你需要传递$ mysqli作为参数

function showConfig ($configID, $mysqli)

或在函数

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