将mysql连接到mysqli时的数据库连接问题

将mysql连接到mysqli时的数据库连接问题

问题描述:

好吧,所以我正在努力将我的网站更新到mysqli,并且我对db连接的DB.php include有困难。将mysql连接到mysqli时的数据库连接问题

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

该文件的相关部分是:

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,它的工作,现在它不和Im真的不知道为什么。我认为包含声明应该引入所有文件中的所有内容,但使这个函数(和其他类似文件)工作的唯一方法是基本上将DB.php的内容放入函数中。这当然是一种可怕的做法。

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

该函数内部的$ mysqli具有局部范围。它不是同一个变量。您需要可以通过$ mysqli的作为参数

function showConfig ($configID, $mysqli) 

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

function showConfig ($configID) 
{ 
    global $mysqli; 
+0

因此然后放在require_once我只是需要把上任何网页时调用这个函数和它会通过? 这是改变的东西还是我一直在做错的事情?谢谢! – OCPik4chu 2013-03-13 21:29:48

+0

是的,我有我的数据库连接定义在一个单独的文件中,我有require_onced。我只是将它传递给我需要的任何函数作为参数。事实上,我有一些相当详细的查询,所以我有我的查询在一个文件中,我的函数在另一个文件中称为query_builder(需要查询文件),然后我需要query_builder文件到我需要运行它们的任何页面。 – 2013-03-14 13:09:54

+0

谢谢,我的意思是将sql连接变量传递给函数。在MySQL中,我不必这样做,所以我想知道这是否是mysqli的改变,或者我之前可以做到,我只是绕过它奇怪的方式。我现在将所有插入内容都放在一个单独的文件中,现在正在将我的查询移动到单独的文件中。这些作品很好并符合其目的,但有很多优化可以发生。再次感谢 :) – OCPik4chu 2013-03-14 14:10:58