将mysqli传递给函数不能按预期工作

时间:2015-05-06 16:20:54

标签: php mysqli

我已经在php中编写了大约1个半月的代码。要查询数据库,我通常会将$mysqli传递给我调用的函数。我在那里调用了db.php。代码有时会工作,有时无理由失败。我写了一个页面并在那里包含了一些功能。在我开发的过程中,它工作了数千次。现在它停止传递$mysqli对象并且函数中的代码开始抱怨并且没有理由。我什么都没改变。 它发生在很多场合,当我通过$mysqli时,它不确定是否会通过。这有什么问题?f

function getsubjectname($mysqli, $subjectid)
    {
        $query="select SubjectName from user_subject where SubjectId=?";
        $stmt=$mysqli->stmt_init();
        $stmt->prepare($query);
        $stmt->bind_param('i', $subjectid);
        $stmt->execute();
        $stmt->bind_result($SubjectName);
        $stmt->fetch();
        return $SubjectName;

    }

在上面的代码中,它直到现在才收到$ mysqli对象。但现在它无法看到它。 当我在函数本身中包含$mysqli=new MySQLi('localhost','root','','spiralblog');时,它就可以工作。

修改

<div style='font-size:24px;'> 
<?php if(!isset($_GET['subjectid']))
{
    $row=getpinnedsubject($mysqli, $userid); echo $row['SubjectName']; 
} else {  
echo getsubjectname($mysqli, $_GET['subjectid']);
}?>
</div>

此代码位于index.php上,调用函数位于另一页面中。致力于功能

1 个答案:

答案 0 :(得分:0)

实际上是我在主页中包含的标题页,我在那里进行了查询,之后没有关闭stmt对象。这导致了意想不到的行为。所以应该始终关闭stmt。 :)