Php 警告:mysqli_query()要求参数1为mysqli,该对象在

Php 警告:mysqli_query()要求参数1为mysqli,该对象在,php,mysqli,Php,Mysqli,嗨,我正在尝试将mysql更改为mysqli,但我的脚本无法工作。改用mysqli后 Database.php <?php include("constants.php"); class MySQLDB { var $connection; //The MySQL database connection var $num_active_users; //Number of active users viewing site var $num

嗨,我正在尝试将mysql更改为mysqli,但我的脚本无法工作。改用mysqli后

Database.php

<?php

 include("constants.php");
 class MySQLDB 
 {

   var $connection;         //The MySQL database connection
   var $num_active_users;   //Number of active users viewing site
   var $num_active_guests;  //Number of active guests viewing site
   var $num_members;        //Number of signed-up users
  /* Note: call getNumMembers() to access $num_members! */

 /* Class constructor */
 function MySQLDB(){

  /* Make connection to database */
 $this->connection= mysqli_connect(DB_SERVER, DB_USER, DB_PASS,DB_NAME);
 // Check connection 
 if (mysqli_connect_errno())
 {
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }


  $this->num_members = -1;

  if(TRACK_VISITORS){
     /* Calculate number of users at site */
     $this->calcNumActiveUsers();

     /* Calculate number of guests at site */
     $this->calcNumActiveGuests();
       }
  }

  function confirmUserPass($username, $password){

  /* Add slashes if necessary (for query) */
  if(!get_magic_quotes_gpc()) {
      $username = addslashes($username);
  }

  /* Verify that user is in database */
  $q = "SELECT password FROM ".TBL_USERS." WHERE username = '$username'";
  $result = mysqli_query($this->connection,$q);
  if(!$result || (mysqli_num_rows($result) < 1)){
     return 1; //Indicates username failure
  }

  /* Retrieve password from result, strip slashes */
  $dbarray = mysqli_fetch_array($result);
  $dbarray['password'] = stripslashes($dbarray['password']);
  $password = stripslashes($password);

  /* Validate that password is correct */
  if($password == $dbarray['password']){
     return 0; //Success! Username and password confirmed
  }
  else{
     return 2; //Indicates password failure
  }
  }


  function confirmUserID($username, $userid){

  /* Add slashes if necessary (for query) */
  if(!get_magic_quotes_gpc()) {
      $username = addslashes($username);
  }

  /* Verify that user is in database */
  $q = "SELECT userid FROM ".TBL_USERS." WHERE username = '$username'";
  $result = mysqli_query($this->connection,$q);
  if(!$result || (mysqli_num_rows($result) < 1)){
     return 1; //Indicates username failure
  }

  /* Retrieve userid from result, strip slashes */
  $dbarray = mysqli_fetch_array($result);
  $dbarray['userid'] = stripslashes($dbarray['userid']);
  $userid = stripslashes($userid);

  /* Validate that userid is correct */
  if($userid == $dbarray['userid']){
     return 0; //Success! Username and userid confirmed
  }
  else{
     return 2; //Indicates userid invalid
   }
   }


   function usernameTaken($username){

  if(!get_magic_quotes_gpc()){
     $username = addslashes($username);
  }
  $q = "SELECT username FROM ".TBL_USERS." WHERE username = '$username'";
  $result = mysqli_query($this->connection,$q);
  return (mysqli_numrows($result) > 0);
  }


   function usernameBanned($username){

  if(!get_magic_quotes_gpc()){
     $username = addslashes($username);
  }
  $q = "SELECT username FROM ".TBL_BANNED_USERS." WHERE username = '$username'";
  $result = mysqli_query($this->connection,$q);
  return (mysqli_numrows($result) > 0);
  }


   function addNewUser($username, $password, $email){

  $time = time();
  /* If admin sign up, give admin user level */
  if(strcasecmp($username, ADMIN_NAME) == 0){
     $ulevel = ADMIN_LEVEL;
  }else{
     $ulevel = USER_LEVEL;
  }
   $q = "INSERT INTO ".TBL_USERS." VALUES ('$username', '$password', '0', $ulevel,     '$email', $time)";
  return mysqli_query($this->connection,$q);
   }

   function updateUserField($username, $field, $value){
  $q = "UPDATE ".TBL_USERS." SET ".$field." = '$value' WHERE username = '$username'";
  return mysqli_query($this->connection,$q);
   }

   function getUserInfo($username){

  $q = "SELECT * FROM ".TBL_USERS." WHERE username = '$username'";
  $result = mysqli_query($this->connection,$q);
  /* Error occurred, return given name by default */
  if(!$result || (mysqli_num_rows($result) < 1)){
     return NULL;
   }
  /* Return result array */
  $dbarray = mysqli_fetch_array($result);
  return $dbarray;
   }


   function getNumMembers(){

  if($this->num_members < 0){
     $q = "SELECT * FROM ".TBL_USERS;
     $result = mysqli_query($this->connection,$q);
     $this->num_members = mysqli_num_rows($result);
   }
  return $this->num_members;
   }


   function calcNumActiveUsers(){

  /* Calculate number of users at site */
  $result = mysqli_query($this->connection,"SELECT * FROM ".TBL_ACTIVE_USERS);
  $this->num_active_users = mysqli_num_rows($result);
   }


   function calcNumActiveGuests(){

  /* Calculate number of guests at site */
  $q = "SELECT * FROM ".TBL_ACTIVE_GUESTS;
  $result = mysqli_query($this->connection,$q);
  $this->num_active_guests = mysqli_num_rows($result);
  }

  function addActiveUser($username, $time){

  $q = "UPDATE ".TBL_USERS." SET timestamp = '$time' WHERE username = '$username'";
  mysqli_query($this->connection,$q);

  if(!TRACK_VISITORS) return;
  $q = "REPLACE INTO ".TBL_ACTIVE_USERS." VALUES ('$username', '$time')";
  mysqli_query($this->connection,$q);
  $this->calcNumActiveUsers();
  }

 /* addActiveGuest - Adds guest to active guests table */
  function addActiveGuest($ip, $time){

  if(!TRACK_VISITORS) return;
  $q = "REPLACE INTO ".TBL_ACTIVE_GUESTS." VALUES ('$ip', '$time')";
  mysqli_query($this->connection,$q);
  $this->calcNumActiveGuests();
 }


   function removeActiveUser($username){

  if(!TRACK_VISITORS) return;
  $q = "DELETE FROM ".TBL_ACTIVE_USERS." WHERE username = '$username'";
  mysqli_query($this->connection,$q);
  $this->calcNumActiveUsers();
  }


   function removeActiveGuest($ip){

  if(!TRACK_VISITORS) return;
  $q = "DELETE FROM ".TBL_ACTIVE_GUESTS." WHERE ip = '$ip'";
  mysqli_query($this->connection,$q);
  $this->calcNumActiveGuests();
  }

   function removeInactiveUsers(){

  if(!TRACK_VISITORS) return;
  $timeout = time()-USER_TIMEOUT*60;
  $q = "DELETE FROM ".TBL_ACTIVE_USERS." WHERE timestamp < $timeout";
  mysqli_query($this->connection,$q);
  $this->calcNumActiveUsers();
   }

  /* removeInactiveGuests */
  function removeInactiveGuests(){
  if(!TRACK_VISITORS) return;
  $timeout = time()-GUEST_TIMEOUT*60;
  $q = "DELETE FROM ".TBL_ACTIVE_GUESTS." WHERE timestamp < $timeout";
  mysqli_query($this->connection,$q);
  $this->calcNumActiveGuests();
  }


   function query($query){

  return mysqli_query($this->connection,$query);
   }
};

/* Create database connection */

$database = new MySQLDB;

?>

我知道我不能在函数外使用$this->connection,并尝试使用全局$connection,但也不起作用?

您应该提供一个资源作为第一个参数,如以下示例:

$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS,DB_NAME);
$query = "SELECT * FROM users";
$result = mysqli_query($connection, $query);
请注意,$connection是来自mysqli_connect的资源。现在,对于对象,您需要执行以下操作:

$query = "SELECT * FROM users";
$result = mysqli_query($database->connection, $query);

其他警告来自第一个警告,因此更正第一个警告,另一个警告也将消失。

尝试创建$Database的实例如何创建实例?你能给我举个例子吗?下面的答案应该标记为已解决。
$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS,DB_NAME);
$query = "SELECT * FROM users";
$result = mysqli_query($connection, $query);
$query = "SELECT * FROM users";
$result = mysqli_query($database->connection, $query);