0

当我尝试调用我的函数时,我正在调用非对象上的成员函数 query()。

我的代码如下所示:

function add_profile() {

    $hostname = "localhost";
    $dbusername = "username";
    $dbname = "dbname";
    $dbpassword = "password";
    $link = mysqli_connect($hostname, $dbusername, $dbpassword, $dbname); 
    if (!$link) { 
    die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); 
    } 

    $sql = "INSERT INTO payment_profiles(id, client_id) VALUES ( '','$profile_id')"; 

    $result = $mysqli->query($sql);
    if (!result) 
    { 
    echo 'Error: ', $mysqli->error;
    }
}

add_profile();

它说我的错误在线:$result = $mysqli->query($sql);

我假设我没有正确调用某些东西。提前感谢您的帮助

4

2 回答 2

9

在您的代码中,您混合了过程代码和面向对象的代码。选择其中之一。以下是您将如何通过程序方式解决问题。

$result = mysqli_query($link, $sql, MYSQLI_USE_RESULT)

当我尝试调用我的函数时,我正在调用非对象上的成员函数 query()。

那是因为该$mysqli对象没有在任何地方声明(或者它是)?在您可以使用之前,$mysqli您应该首先创建一个实例mysqli并将其分配给您的对象。

$mysqli = new mysqli("localhost", "my_user", "my_password", "database");

只有这样你才能调用 mysqli 类的方法,比如$mysqli->query();

您犯的错误可能取决于两个误解:

1)您从 mysqli 手册的程​​序样式部分粘贴了一半代码,从 oop 部分粘贴了一半

2)您假设$mysqli是一个用$mysqli_connect();. 它不是。new如果您想将构造函数用作对象,则应使用关键字调用构造函数。

于 2013-07-02T20:46:06.440 回答
2
 $link = mysqli_connect($hostname, $dbusername, $dbpassword, $dbname); 
 /////

 $result = $mysqli->query($sql);
           ///////
于 2013-07-02T20:44:02.777 回答