在非对象上调用成员函数prepare() - MySQLi&中的Prepared Statements PHP

时间:2011-12-23 06:38:16

标签: php mysql pdo mysqli prepared-statement

我在php中学习MySQLi,我无法理解为什么我会在非对象错误上调用成员函数prepare()。

这是我的代码如下:

public function fetch_posts($num = 5)
{

    global $mysqli;

    if($stmt = $mysqli->prepare("SELECT * FROM posts ORDER BY id desc LIMIT ?")) 
    {

       /* Bind parameters
          s - string, b - boolean, i - int, etc */
       $stmt -> bind_param("i", $num);

       /* Execute it */
       $stmt -> execute();

       /* Bind results */
       $stmt -> bind_result($result);

       /* Fetch the value */
       $stmt -> fetch();

       /* Close statement */
       $stmt -> close();

    }        
    $mysqli -> close();
}

$mysqli是MySQLi连接调用$mysqli = new mysqli(DB_HOST, DB_ID, DB_PW, DB);,它位于__construct()函数中,两者都在同一个类中。

我在这里做过一些明显错误的事吗?我看不到它。

1 个答案:

答案 0 :(得分:0)

由于某种原因,

$mysqli不是MySQL连接。

如果您没有配置调试器以便逐步完成代码,请在gettype($mysqli)电话之前使用prepare()查看您正在处理的内容。