【问题标题】:DB connection issues while converting mysql to mysqli将 mysql 转换为 mysqli 时出现数据库连接问题
【发布时间】:2013-03-02 01:23:45
【问题描述】:

好的,所以我正在努力将我的网站更新为 mysqli,但我在为 db 连接添加 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 后,我遇到了所有使用该文件的页面的问题。基本上即使包含我在第 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 的内容放入函数中。这当然是一种糟糕的做法。

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

【问题讨论】:

    标签: php include mysqli


    【解决方案1】:

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

    function showConfig ($configID, $mysqli)
    

    或者在函数内部使用全局声明

    function showConfig ($configID)
    {
        global $mysqli;
    

    【讨论】:

    • 那么使用 require_once 我只需要将它放在调用此函数的任何页面上,它就会通过?这是发生了变化还是我一直都做错了?谢谢!
    • 是的,我的 db 连接定义在一个单独的文件中,我有它 require_onced。我只是将它作为参数传递给我需要的任何函数。事实上,我有一些非常复杂的查询,所以我将查询放在一个文件中,将我的函数放在另一个名为 query_builder 的文件中(需要查询文件),然后我需要将 query_builder 文件放入我需要从中运行它们的任何页面中。
    • 谢谢,我实际上是指将 sql 连接变量传递给函数。在 mysql 中我不必这样做,所以我想知道这是否是 mysqli 中的更改,或者我以前可以这样做,但我只是以一种奇怪的方式绕过它。我目前将所有插入内容放在一个单独的文件中,现在正在将我的查询移动到一个单独的文件中。效果很好并且达到了它的目的,但是可能会发生很多优化。再次感谢:)
    猜你喜欢
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 2021-11-22
    • 2020-11-26
    相关资源
    最近更新 更多