本文分享一个好用的php与mysql操作类,此mysql类与其它类的不同在于,可以设置表的读、写锁。有需要的朋友参考下吧。
分享一个php与mysql操作类,代码: <?php /** * mysql操作类 * by bbs.it-home.org */ // 定义常量 /** * 是否开启调试模式 */ define("DEBUG", FALSE); /** * 以下变量不要改动 */ /** * 设定表的读锁 */ define("LOCKED_FOR_READ", "READ"); /** * 设定表的写锁 */ define("LOCKED_FOR_WRITE", "WRITE"); /** * HOWTO */ class mySQL { /** * The connection resource id * * @var object */ var $connection; /** * The selected database * * @var object */ var $selectedDb; /** * The result from a select-query * * @var object */ var $result; /** * Flag that tells if you are connected to the database or not * * @var boolean */ var $isConnected; /** * Flag that tells if you the tables are locked or not * * @var boolean */ var $isLocked; /** *This will indicate what querytype the last query was * * @var string */ var $queryType; /** * This is the constructor of this mysql class. * It creates a connection to the database, and if possible it sets the database to * You can specify if you want to use persistant connections or not. * * @param string The host to the mySQL server * @param string The username you use to log on to the mySQL server * @param string The password you use to log on to the mySQL server * @param string The name of the database you wish to use * @param boolean TRUE if you want to use persistant connections. Default is TRUE * @return boolean TRUE when connection was successfull * @access public */ function mySQL($sHost, $sUser, $sPassword, $sDatabase="", $bPersistant=TRUE) { $conFunc = ""; if(!defined("DEBUG")) { define("DEBUG", FALSE); } if($this->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("<font style=\"background-color: red\">".$this->getQueryType()."</font><br>"); } 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("<b>Error</b><br />".$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 "<br /><b>Mysql Error Number ".mysql_errno()."</b><br />".mysql_error(); } return FALSE; } } ?> |

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP成为许多网站首选技术栈的原因包括其易用性、强大社区支持和广泛应用。1)易于学习和使用,适合初学者。2)拥有庞大的开发者社区,资源丰富。3)广泛应用于WordPress、Drupal等平台。4)与Web服务器紧密集成,简化开发部署。

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Dreamweaver Mac版
视觉化网页开发工具