PHP和MYSQLI错误,在非对象上调用成员函数query()


PHP and MYSQLI Error, Call to a member function query() on a non-object

当我试图调用我的函数时,我正在非对象上获得对成员函数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);

我想我打电话的方式不对。提前感谢的任何帮助

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

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

当我试着调用我的函数。

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

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

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

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

1) 您从mysqli手册的过程风格部分粘贴了一半代码,从oop部分粘贴了一半

2) 假设CCD_ 6是用CCD_ 7实例化的全局对象。事实并非如此。如果您想将构造函数用作对象,则应该使用new关键字来调用它。

 $link = mysqli_connect($hostname, $dbusername, $dbpassword, $dbname); 
 /////
 $result = $mysqli->query($sql);
           ///////