/*
* mysql数据库 DB类
* @package db
* @author yytcpt(无影)
* @version 2008-03-27
* @copyrigth http://www.d5s.cn/
*/
class db {
var $connection_id = "";
var $pconnect = 0;
var $shutdown_queries = array();
var $queries = array();
var $query_id = "";
var $query_count = 0;
var $record_row = array();
var $failed = 0;
var $halt = "";
var $query_log = array();
function connect($db_config){
if ($this->pconnect){
$this->connection_id = mysql_pconnect($db_config["hostname"], $db_config["username"], $db_config["password"]);
}else{
$this->connection_id = mysql_connect($db_config["hostname"], $db_config["username"], $db_config["password"]);
}
if ( ! $this->connection_id ){
$this->halt("Can not connect MySQL Server");
}
if ( ! @mysql_select_db($db_config["database"], $this->connection_id) ){
$this->halt("Can not connect MySQL Database");
}
if ($db_config["charset"]) {
@mysql_unbuffered_query("SET NAMES '".$db_config["charset"]."'");
}
return true;
}
//发送SQL 查询,并返回结果集
function query($query_id, $query_type='mysql_query'){
$this->query_id = $query_type($query_id, $this->connection_id);
$this->queries[] = $query_id;
if (! $this->query_id ) {
$this->halt("查询失败:\n$query_id");
}
$this->query_count++;
$this->query_log[] = $str;
return $this->query_id;
}
//发送SQL 查询,并不获取和缓存结果的行
function query_unbuffered($sql=""){
return $this->query($sql, 'mysql_unbuffered_query');
}
//从结果集中取得一行作为关联数组
function fetch_array($sql = ""){
if ($sql == "") $sql = $this->query_id;
$this->record_row = @mysql_fetch_array($sql, MYSQL_ASSOC);
return $this->record_row;
}
function shutdown_query($query_id = ""){
$this->shutdown_queries[] = $query_id;
}
//取得结果集中行的数目,仅对 INSERT,UPDATE 或者 DELETE
function affected_rows() {
return @mysql_affected_rows($this->connection_id);
}
//取得结果集中行的数目,仅对 SELECT 语句有效
function num_rows($query_id="") {
if ($query_id == "") $query_id = $this->query_id;
return @mysql_num_rows($query_id);
}
//返回上一个 MySQL 操作中的错误信息的数字编码
function get_errno(){
$this->errno = @mysql_errno($this->connection_id);
return $this->errno;
}
//取得上一步 INSERT 操作产生的 ID
function insert_id(){
return @mysql_insert_id($this->connection_id);
}
//得到查询次数
function query_count() {
return $this->query_count;
}
//释放结果内存
function free_result($query_id=""){
if ($query_id == "") $query_id = $this->query_id;
@mysql_free_result($query_id);
}
//关闭 MySQL 连接
function close_db(){
if ( $this->connection_id ) return @mysql_close( $this->connection_id );
}
//列出 MySQL 数据库中的表
function get_table_names(){
global $db_config;
$result = mysql_list_tables($db_config["database"]);
$num_tables = @mysql_numrows($result);
for ($i = 0; $i $tables[] = mysql_tablename($result, $i);
}
mysql_free_result($result);
return $tables;
}
//从结果集中取得列信息并作为对象返回,取得所有字段
function get_result_fields($query_id=""){
if ($query_id == "") $query_id = $this->query_id;
while ($field = mysql_fetch_field($query_id)) {
$fields[] = $field;
}
return $fields;
}
//错误提示
function halt($the_error=""){
$message = $the_error."
\r\n";
$message.= $this->get_errno() . "
\r\n";
$sql = "INSERT INTO `db_error`(pagename, errstr, timer) VALUES('".$_SERVER["PHP_SELF"]."', '".addslashes($message)."', ".time().")";
@mysql_unbuffered_query($sql);
if (DEBUG==true){
echo "
echo "\r\n";
echo "\r\n";
echo "
\r\n";\r\n";
echo "\r\n";
echo "
exit;
}
}
function __destruct(){
$this->shutdown_queries = array();
$this->close_db();
}
function sql_select($tbname, $where="", $limit=0, $fields="*", $orderby="id", $sort="DESC"){
$sql = "SELECT ".$fields." FROM `".$tbname."` ".($where?" WHERE ".$where:"")." ORDER BY ".$orderby." ".$sort.($limit ? " limit ".$limit:"");
return $sql;
}
function sql_insert($tbname, $row){
foreach ($row as $key=>$value) {
$sqlfield .= $key.",";
$sqlvalue .= "'".$value."',";
}
return "INSERT INTO `".$tbname."`(".substr($sqlfield, 0, -1).") VALUES (".substr($sqlvalue, 0, -1).")";
}
function sql_update($tbname, $row, $where){
foreach ($row as $key=>$value) {
$sqlud .= $key."= '".$value."',";
}
return "UPDATE `".$tbname."` SET ".substr($sqlud, 0, -1)." WHERE ".$where;
}
function sql_delete($tbname, $where){
return "DELETE FROM `".$tbname."` WHERE ".$where;
}
//新增加一条记录
function row_insert($tbname, $row){
$sql = $this->sql_insert($tbname, $row);
return $this->query_unbuffered($sql);
}
//更新指定记录
function row_update($tbname, $row, $where){
$sql = $this->sql_update($tbname, $row, $where);
return $this->query_unbuffered($sql);
}
//删除满足条件的记录
function row_delete($tbname, $where){
$sql = $this->sql_delete($tbname, $where);
return $this->query_unbuffered($sql);
}
/* 根据条件查询,返回所有记录
* $tbname 表名, $where 查询条件, $limit 返回记录, $fields 返回字段
*/
function row_select($tbname, $where="", $limit=0, $fields="*", $orderby="id", $sort="DESC"){
$sql = $this->sql_select($tbname, $where, $limit, $fields, $orderby, $sort);
return $this->row_query($sql);
}
//详细显示一条记录
function row_select_one($tbname, $where, $fields="*", $orderby="id"){
$sql = $this->sql_select($tbname, $where, 1, $fields, $orderby);
return $this->row_query_one($sql);
}
function row_query($sql){
$rs = $this->query($sql);
$rs_num = $this->num_rows($rs);
$rows = array();
for($i=0; $i $rows[] = $this->fetch_array($rs);
}
$this->free_result($rs);
return $rows;
}
function row_query_one($sql){
$rs = $this->query($sql);
$row = $this->fetch_array($rs);
$this->free_result($rs);
return $row;
}
//计数统计
function row_count($tbname, $where=""){
$sql = "SELECT count(id) as row_sum FROM `".$tbname."` ".($where?" WHERE ".$where:"");
$row = $this->row_query_one($sql);
return $row["row_sum"];
}
}
?>
很久没有发帖了,把我常用的一些php类文件分享出来。
如果您加了新功能,或者是有改进,请与大家一起分享。
$db_config["hostname"] = "127.0.0.1"; //服务器地址
$db_config["username"] = "root"; //数据库用户名
$db_config["password"] = "root"; //数据库密码
$db_config["database"] = "wap_blueidea_com"; //数据库名称
$db_config["charset"] = "utf8";
include('db.php');
$db = new db();
$db->connect($db_config);
//例:查询表 table_name 中 cid=1的所有记录。
$row = $db->row_select('table_name', 'cid=1');
?>
更详细的使用方法,请参考 db类文件中的注释。

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

TomakePHPapplicationsfaster,followthesesteps:1)UseOpcodeCachinglikeOPcachetostoreprecompiledscriptbytecode.2)MinimizeDatabaseQueriesbyusingquerycachingandefficientindexing.3)LeveragePHP7 Featuresforbettercodeefficiency.4)ImplementCachingStrategiessuc

ToimprovePHPapplicationspeed,followthesesteps:1)EnableopcodecachingwithAPCutoreducescriptexecutiontime.2)ImplementdatabasequerycachingusingPDOtominimizedatabasehits.3)UseHTTP/2tomultiplexrequestsandreduceconnectionoverhead.4)Limitsessionusagebyclosin

Dependency injection (DI) significantly improves the testability of PHP code by explicitly transitive dependencies. 1) DI decoupling classes and specific implementations make testing and maintenance more flexible. 2) Among the three types, the constructor injects explicit expression dependencies to keep the state consistent. 3) Use DI containers to manage complex dependencies to improve code quality and development efficiency.

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

PHPisusedforsendingemailsduetoitsbuilt-inmail()functionandsupportivelibrarieslikePHPMailerandSwiftMailer.1)Usethemail()functionforbasicemails,butithaslimitations.2)EmployPHPMailerforadvancedfeatureslikeHTMLemailsandattachments.3)Improvedeliverability

PHP performance bottlenecks can be solved through the following steps: 1) Use Xdebug or Blackfire for performance analysis to find out the problem; 2) Optimize database queries and use caches, such as APCu; 3) Use efficient functions such as array_filter to optimize array operations; 4) Configure OPcache for bytecode cache; 5) Optimize the front-end, such as reducing HTTP requests and optimizing pictures; 6) Continuously monitor and optimize performance. Through these methods, the performance of PHP applications can be significantly improved.

DependencyInjection(DI)inPHPisadesignpatternthatmanagesandreducesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itallowspassingdependencieslikedatabaseconnectionstoclassesasparameters,facilitatingeasiertestingandscalability.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

Atom editor mac version download
The most popular open source editor

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.
