php mysql 连接类_一个好用的php mysql连接类

本文分享一个好用的php与mysql操作类,此mysql类与其它类的不同在于,可以设置表的读、写锁。有需要的朋友参考下吧。

分享一个php与mysql操作类,代码:

getConnected()) {

$this->closeConnection();

}

if($this->connection = ($bPersistant ? mysql_pconnect($sHost, $sUser, $sPassword) : mysql_connect($sHost, $sUser, $sPassword))) {

$this->setConnected(TRUE);

if($sDatabase) {

$this->setDb($sDatabase);

}

return TRUE;

} else {

$this->setConnected(FALSE);

return FALSE;

}

}

/**

* This is the destructor of this class. It frees the result of a query,

* it unlocks all locked tables and close the connection to the database

* It does not return anything at all, so you will not know if it was sauccessfull

*

* @access public

*/

function _mySQL() {

if($this->result) {

$this->freeResult();

}

if($this->getLocked()) {

$this->unlock();

}

if($this->getConnected()) {

$this->closeConnection();

}

}

/**

* This function frees the result from a query if there is any result.

*

* @access public

*/

function freeResult() {

if($this->result) {

@mysql_free_result($this->result);

}

}

/**

* This function executes a query to the database.

* The function does not return the result of the query, you must call the

* function getQueryResult() to fetch the result

*

* @param string The query-string to execute

* @return boolean TRUE if the query was successfull

* @access public

*/

function query($query) {

if(strlen(trim($query)) == 0) {

$this->printError("No query got in function query()");

return FALSE;

}

if(!$this->getConnected()) {

$this->printError("Not connected in function query()");

return FALSE;

}

$queryType = substr(trim($query), 0, strpos($query, " "));

$this->setQueryType($queryType);

$this->result = mysql_query($query, $this->connection);

if($this->result) {

return TRUE;

}

return FALSE;

}

/**

* Sets the querytype of the last query executed

* For example it can be SELECT, UPDATE, DELETE etc.

*

* @access private

*/

function setQueryType($type) {

$this->queryType = strtoupper($type);

}

/**

* Returns the querytype

*

* @return string

* @access private

*/

function getQueryType() {

return $this->queryType;

}

/**

* This function returns number of rows got when executing a query

*

* @return mixed FALSE if there is no query-result.

* If the queryType is SELECT then it will use the function MYSQL_NUM_ROWS

* Otherwise it uses the MYSQL_AFFECTED_ROWS

* @access public

*/

function getNumRows() {

if($this->result) {

if(DEBUG==TRUE) {

print("".$this->getQueryType()."

");

}

return mysql_affected_rows($this->connection);

}

return FALSE;

}

/**

* The function returns the result from a call to the query() function

*

* @return object

* @access public

*/

function getQueryResult() {

return $this->result;

}

/**

* This function returns the query result as an array for each row in the query result

*

* @return array

* @access public

*/

function fetchArray() {

if($this->result) {

return mysql_fetch_array($this->result);

}

return FALSE;

}

/**

* This function returns the query result as an object for each row in the query result

*

* @return object

* @access public

*/

function fetchObject() {

if($this->result) {

return mysql_fetch_object($this->result);

}

return FALSE;

}

/**

* This function returns the query result as an array for each row in the query result

*

* @return array

* @access public

*/

function fetchRow() {

if($this->result) {

return mysql_fetch_row($this->result);

}

return FALSE;

}

/**

* This function sets the database

*

* @return boolean TRUE if the database was set

* @access public

*/

function setDb($sDatabase) {

if(!$this->getConnected()) {

$this->printError("Not connected in function setDb()");

return FALSE;

}

if($this->selectedDb = mysql_select_db($sDatabase, $this->connection)) {

return TRUE;

}

return FALSE;

}

/**

* This function returns a flag so you can see if you are connected to the database

* or not

*

* @return boolean TRUE when connected to the database

* @access public

*/

function getConnected() {

return $this->isConnected;

}

/**

* This function sets the flag so you can see if you are connected to the database

*

* @param $bStatus The status of the connection. TRUE if you are connected,

* FALSE if you are not

* @access public

*/

function setConnected($bStatus) {

$this->isConnected = $bStatus;

}

/**

* The function unlocks tables if there are locked tables and the closes the

* connection to the database.

*

* @access public

*/

function closeConnection() {

if($this->getLocked()) {

$this->unlock();

}

if($this->getConnected()) {

mysql_close($this->connection);

$this->setConnected(FALSE);

}

}

/**

* Unlocks all tables that are locked

*

* @access public

*/

function unlock() {

if(!$this->getConnected()) {

$this->setLocked(FALSE);

}

if($this->getLocked()) {

$this->query("UNLOCK TABLES");

$this->setLocked(FALSE);

}

}

/**

* This function locks the table(s) that you specify

* The type of lock must be specified at the end of the string.

*

* @param string a string containing the table(s) to lock,

* as well as the type of lock to use (READ or WRITE)

* at the end of the string

* @return boolean TRUE if the tables was successfully locked

* @access private

*/

function lock($sCommand) {

if($this->query("LOCK TABLE ".$sCommand)) {

$this->setLocked(TRUE);

return TRUE;

}

$this->setLocked(FALSE);

return FALSE;

}

/**

* This functions sets read lock to specified table(s)

*

* @param string a string containing the table(s) to read-lock

* @return boolean TRUE on success

*/

function setReadLock($sTable) {

return $this->lock($sTable." ".LOCKED_FOR_READ);

}

/**

* This functions sets write lock to specified table(s)

*

* @param string a string containing the table(s) to read-lock

* @return boolean TRUE on success

*/

function setWriteLock($sTable) {

return $this->lock($sTable." ".LOCKED_FOR_WRITE);

}

/**

* Sets the flag that indicates if there is any tables locked

*

* @param boolean The flag that will indicate the lock. TRUE if locked

*/

function setLocked($bStatus) {

$this->isLocked = $bStatus;

}

/**

* Returns TRUE if there is any locked tables

*

* @return boolean TRUE if there are locked tables

*/

function getLocked() {

return $this->isLocked;

}

/**

* Prints an error to the screen. Can be used to kill the application

*

* @param string The text to display

* @param boolean TRUE if you want to kill the application. Default is FALSE

*/

function printError($text, $killApp=FALSE) {

if($text) {

print("Error

".$text);

}

if($killApp) {

exit();

}

}

/**

* Display any mysql-error

*

* @return mixed String with the error if there is any error.

* Otherwise it returns FALSE

*/

function getMysqlError() {

if(mysql_error()) {

return "

Mysql Error Number ".mysql_errno()."

".mysql_error();

}

return FALSE;

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值