我有下一堂课:
<?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)
怎么了?
您关闭连接
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,INSERT或UPDATE查询.哦,REPLACE我忘了.
| 归档时间: |
|
| 查看次数: |
2368 次 |
| 最近记录: |