MySQLi-调用未定义的方法:: prepare()

时间:2018-07-10 19:21:51

标签: php mysqli

首先,在SO上有两个关于此主题的问题。但是,最有用的是关于PDO,我在这里使用MySQLi。 This one接近了,但是我似乎无法使其适合我的情况。因此,这个问题。

我尝试使用准备好的语句来处理HTML格式的用户输入。这已发布到process.php:

class connect{
    public $connection;

    function db_connect(){
      $this->connection = mysqli_connect(xxx,xxx,xxx,xxx);
      return $this->connection;
    }

$con = new connect();
$con->db_connect();

$keyword = $_POST["value"];
$query = "SELECT * FROM table WHERE title LIKE ?";

$stmt = $con->prepare($query);
$stmt->bind_param("s", $keyword);
$stmt->execute();

这会引发错误

  

致命错误:未捕获错误:调用未定义的方法   在process.php:27中连接:: prepare()

第27行包含$stmt = $con->prepare($query);

恐怕这个问题的答案可能很简单,但是您的帮助将不胜感激。

2 个答案:

答案 0 :(得分:6)

$con不包含数据库连接。

应该是

$connection = $con->db_connect();

db_connect()返回实际的数据库连接

然后使用$connection访问mysqli函数,例如prepare()

$stmt = $connection->prepare($query); 

答案 1 :(得分:5)

您永远不会将$con->db_connect()的结果分配给变量。 $con仍然是类connect。要么将结果分配给变量$connection = $con->db_connect();并使用$connection变量,要么使用$connection类的公共connect()属性:

$statement = $con->connection->prepare(...);