2

下面是我在 db.php 下的代码

    <?php
$con = mysqli_connect('localhost', 'root', '', 'mydb');

/* check connection */
if (!$con) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

?>

在 index.php 下,我将 db.php 和 functions.php 包括为:

include("includes/db.php");
include("includes/functions.php");

functions.php 也使用 db.php 连接。我以前使用mysql时没有问题。但是在我将 mysql 更改为 mysqli 后,我在我的 functions.php 中收到错误“警告:mysqli_query() 期望参数 1 为 mysqli,null given in”。

这是functions.php下有错误的函数:

function get_type($r_id){
    $result=mysqli_query($con, "select type from rooms where id=$r_id") or die("select type from rooms where id=$r_id"."<br/><br/>".mysqli_error());
    $row=mysqli_fetch_assoc($result);
    return $row['type'];
}

我的解决方案是在调用 mysqli 的 functions.php 下的每个函数中添加 db.php,例如:

function get_type($r_id){
    include("includes/db.php");
    $result=mysqli_query($con, "select type from rooms where id=$r_id") or die("select type from rooms where id=$r_id"."<br/><br/>".mysqli_error());
    $row=mysqli_fetch_assoc($result);
    return $row['type'];
}

我想知道这是否是正确的解决方案。

4

2 回答 2

3

问题是 $con 不适用于您的功能

您可以为每个函数添加另一个参数

function get_type($con, $r_id)...

然后将 $con 传递给它

include('includes/db.php');
include('includes/functions.php');
$blah = get_type($con, 5);

或者

例如,您可以通过添加这个来使每个函数都可以访问 $ global $con;con

function get_type($r_id){
    global $con;
    $result=mysqli_query($con, "select type from rooms where id=$r_id") or die("select type from rooms where id=$r_id"."<br/><br/>".mysqli_error());
    $row=mysqli_fetch_assoc($result);
    return $row['type'];
}

我的朋友..是你的选择

(可能还有其他方法可以给这只猫剥皮)

于 2012-07-15T13:38:19.877 回答
0

在函数中设置$con全局:

function get_type($r_id){
    global $con;
    $result=mysqli_query($con, "select type from rooms where id=$r_id") or die("select type from rooms where id=$r_id"."<br/><br/>".mysqli_error());
    $row=mysqli_fetch_assoc($result);
    return $row['type'];
}
于 2012-07-15T13:56:42.537 回答