2013-10-08 58 views
0

給出的對象嗨,我想改變MySQL到mysqli但我的腳本不工作。更改爲mysqli的警告:mysqli_query()期望參數1是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; 

?> 

的index.php

<?php 
include("include/database.php"); 

$result = mysqli_query($database,"SELECT * FROM users"); 

while($row = mysqli_fetch_array($result)) 
    { 
    echo $row['username'] . " " . $row['achternaam']; 
    echo "<br>"; 
    } 

mysqli_close($database); 
?> 

,我有錯誤後:

Warning: mysqli_query() expects parameter 1 to be mysqli, object given in  C:\xampp\htdocs\follow\index.php on line 4 

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\follow\index.php on line 6 

Warning: mysqli_close() expects paramet er 1 to be mysqli, object given in C:\xampp\htdocs\follow\index.php on line 12 

我知道,我不能使用$ this->連接outsite函數,並試圖用GLOBAL $連接,但也不工作?

+0

嘗試創建'$ database'的實例 –

+0

如何創建實例?你能告訴我一個例子 –

+0

下面的答案應該被標記爲已解決,恕我直言。 –

回答

3

你應該提供的資源像這個例子中的第一個參數:

$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS,DB_NAME); 
$query = "SELECT * FROM users"; 
$result = mysqli_query($connection, $query); 

注意$連接是從mysqli_connect資源。現在,你的目標,你需要做這樣的事情:

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

其他的警告來自於第一個,所以修正的第一個,另一個也會消失。

相關問題