-1

我无法从函数中连接到我的数据库。我收到以下错误:

“警告:mysqli::query() 期望参数 1 是字符串,对象在...中给出”

我正在使用“全球”,所以我看不出我做错了什么。

-- 文件:db.php --

$db = new mysqli($hostname, $sql_us, $sql_us_pwd, $sql_db); // Connects fine

-- 文件:functions.php --

function db_query($query, $type = 'assoc') {

  global $db;
  $result = $db->query($query);

  if ($type == 'assoc') {
    $rows = $result->fetch_array(MYSQLI_ASSOC);
  } else { 
    $rows = $result->fetch_object();
  }

  return $rows;
  mysqli_free_result($result);

}

-- 文件:somepage.php --

$query = "SELECT * FROM `users`";
$users = db_query($query);
4

2 回答 2

-1

这可能会帮助你。

function db_query($query, $db, $type = 'assoc') {

  $result = $db->query($query);

  if ($type == 'assoc') {
    $rows = $result->fetch_array(MYSQLI_ASSOC);
  } else { 
    $rows = $result->fetch_object();
  }

  return $rows;
  mysqli_free_result($result);

}

$db = new mysqli($hostname, $sql_us, $sql_us_pwd, $sql_db); // Connects fine
$query = "SELECT * FROM `users`";
$users = db_query($query,$db);

$db 连接未传递给函数,因此参数未传递给 mysql 的查询函数,因此您会收到错误消息。

于 2013-07-29T14:38:23.127 回答
-1

这对我来说很好用:

// db.php
$db = new mysqli($hostname, $sql_us, $sql_us_pwd, $sql_db); // Connects fine

// functions.php
include_once('db.php');

function db_query($query, $type = 'assoc') {
    global $db;
    $result = $db->query($query);

    if ($type == 'assoc') {
        $rows = $result->fetch_array(MYSQLI_ASSOC);
    } else { 
       $rows = $result->fetch_object();
    }

   return $rows;
   mysqli_free_result($result);
}

// somepage.php
include_once('functions.php');

$query = "SELECT * FROM `users`";
$users = db_query($query);

var_dump($users);

它们都在同一个目录中。此外,由于我没有 users 表,因此我用我的一张表进行了尝试。

于 2013-07-29T14:41:53.877 回答