php中的mysql_affected_rows()

Div*_*ers 1 php mysql

可能重复:
警告:mysql_fetch_array():提供的参数不是有效的MySQL结果

我有下一堂课:

<?php
    class DbHelper{
        private $databaseURL;
        private $databaseUName;
        private $databasePWord;
        private $databaseName;
        private $nameOfDbWithWorkers;
        private $connection;

        function __construct($dbURL, $dbUserName, $dbPword, $dbName, $nameOfDbWithWorkers){
            $this->databaseURL = $dbURL;
            $this->databaseUName = $dbUserName;
            $this->databasePWord = $dbPword;
            $this->databaseName = $dbName;
            $this->nameOfDbWithWorkers = $nameOfDbWithWorkers;
        }

        function setConnectionToDb(){
            $this->connection = mysql_connect($this->databaseURL,$this->databaseUName,$this->databasePWord) OR DIE("can't connect to DB"); 
            mysql_select_db($this->databaseName, $this->connection)or die ("Error while connecting to database");
        }

        function getUser($login, $pass){
            echo "$login, $pass";
            $query = "SELECT type FROM $this->nameOfDbWithWorkers WHERE login = '$login' and password = '$pass';"; 
            $queryResult = $this->getDataFromDbByQuery($query);
            if ((mysql_affected_rows($this->connection) == 1)){
                $meta = mysql_fetch_assoc($queryResult);
                if ($meta['type']=='admin'){
                    return 'admin';
                }
                if ($meta['type']=='user'){
                    return 'user';
                }
                else{
                    return 'nomatch';
                }
            }
            else{               
                 return 'nomatch';
            }           
        }

        function getDataFromDbByQuery($query){
            $this->setConnectionToDb();
            $result = mysql_query($query);
            mysql_close($this->connection);
            return $result;
        }
}
?>
Run Code Online (Sandbox Code Playgroud)

并通过调用它

$dbHelp = new DbHelper($dbURL, $dbUName, $dbPword, $dbName, $nameOfDbWithWorkers);
$userType = $dbHelp->getUser($login, $pass);
Run Code Online (Sandbox Code Playgroud)

并有一个下一个错误:

Warning: mysql_affected_rows(): 5 is not a valid MySQL-Link resource in Z:\home\ecl.ru\www\classes\dbhelper.php on line 27
Run Code Online (Sandbox Code Playgroud)

怎么了?

Kin*_*nch 9

您关闭连接

    function getDataFromDbByQuery($query){
        $this->setConnectionToDb();
        $result = mysql_query($query);
        mysql_close($this->connection); // <----
        return $result;
    }
Run Code Online (Sandbox Code Playgroud)

如果你想稍后在你的脚本中使用它,你不应该这样做;)但是,因为PHP关闭所有在脚本端打开自己,你根本不需要自己关闭它.

更新(只是为了避免下一个问题;))

您可能想要使用mysql_num_rows()而不是mysql_affected_rows().第一个返回由一个返回的行数SELECT-query,另一个返回受影响的行数(;))由一个DELETE,INSERTUPDATE查询.哦,REPLACE我忘了.