PHP/MySQLi - 致命错误:在非对象上调用成员函数mysqli_query()

Ven*_*lev 5 php mysqli

这是我的代码:

require "../include/functions.php";

error_reporting(E_ALL);
ini_set('display_errors', '1'); 

ConnectWithMySQLiDatabase();

$Cat = addslashes($_POST["Category"]);

$v = $conn->mysqli_query($conn,"SELECT * FROM `categories` WHERE `id`=$Cat");
$vrowi = mysqli_fetch_array($v, MYSQLI_ASSOC);

$url = $conn->real_escape_string($vrowi['Link']);
Run Code Online (Sandbox Code Playgroud)

这是我所拥有的functions.php:

function ConnectWithMySQLiDatabase() {

     global $dbhost, $dbuser, $dbpass, $database, $HTTP_SERVER_VARS;

    $conn = new mysqli($dbhost, $dbuser, $dbpass, $database);
    // Check connection
    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }


    $conn->set_charset("utf8");

    global $conn;

}
Run Code Online (Sandbox Code Playgroud)

变量$dbhost, $dbuser, $dbpass, $database,设置正确.

当我尝试执行此mysqli_query时,我收到以下错误:

<b>Fatal error</b>:  Call to a member function mysqli_query() on a non-object in <b>/fetch_category_products.php</b> on line <b>19</b><br />
Run Code Online (Sandbox Code Playgroud)

第19行是:

$v = $conn->mysqli_query($conn,"SELECT * FROM `categories` WHERE `id`=$Cat");
Run Code Online (Sandbox Code Playgroud)

你能告诉我我的错误在哪里,我该如何解决?

提前致谢!

Two*_*aws 3

出现该错误的原因是数据库连接不工作 \xe2\x80\x93\xc2\xa0 它的字面意思是 的值$conn不是一个对象,这可能意味着它要么未设置,要么设置为,false因为连接失败。进行更改ConnectWithMySQLiDatabase(),使其最后一行不是global $conn;but return $conn;

\n\n

ConnectWithMySQLiDatabase();现在改变你调用该函数的方式$conn = ConnectWithMySQLiDatabase();,我相信问题就会消失。

\n\n

OP 在此更改后发布了更新,混乱变得更加清晰:现在他们有了连接MySQLi,他们应该只使用query,如下所示:

\n\n
$v = $conn->query("SELECT * FROM `categories` WHERE `id`=$Cat");\n
Run Code Online (Sandbox Code Playgroud)\n