Frameworks are fine for PHP development. How many lines do you need to insert a record in code if you’re not using MVC? I have encapsulated the database operation class based on PDO on the basis of accumulation at ordinary times.
//header('content-type:text/html; charset=utf-8');
class PdoMySQL{
public static $config=array(a);// Set connection parameters and configure information
public static $link=null;// Save the connection identifier
public static $pconnect=false;// Whether to enable the long connection
public static $dbVersion=null;// Save the database version
public static $connected=false;// Check whether the connection is successful
public static $PDOStatement=null;// Save the PDOStatement object
public static $queryStr=null;// Save the last action
public static $error=null;// An error message was reported
public static $lastInsertId=null;// Save the AUTO_INCREMENT generated by the previous insert
public static $numRows=0;// The number of records affected by the previous operation
/** * connect to PDO *@param string $dbConfig
* @return boolean
*/
public function __construct($dbConfig=' '){
if(! class_exists("PDO")) {self::throw_exception('PDO is not supported, please enable it first');
}
if(! is_array($dbConfig)){ $dbConfig=array(
'hostname'=>DB_HOST,
'username'=>DB_USER,
'password'=>DB_PWD,
'database'=>DB_NAME,
'hostport'=>DB_PORT,
'dbms'=>DB_TYPE,
'dsn'=>DB_TYPE.":host=".DB_HOST."; dbname=".DB_NAME
);
}
if(empty($dbConfig['hostname']))self::throw_exception('Database configuration not defined, please define first');
self::$config=$dbConfig;
if(empty(self::$config['params']))self::$config['params'] =array(a);if(!isset(self::$link)){
$configs=self::$config;
if(self::$pconnect){
// Enable long connections and add them to the configuration array
$configs['params'][constant("PDO::ATTR_PERSISTENT")] =true;
}
try{
self::$link=new PDO($configs['dsn'],$configs['username'],$configs['password'],$configs['params']);
}catch(PDOException $e){
self::throw_exception($e->getMessage());
}
if(!self::$link){
self::throw_exception('PDO connection error ');
return false;
}
self::$link->exec('SET NAMES '.DB_CHARSET);
self::$dbVersion=self::$link->getAttribute(constant("PDO::ATTR_SERVER_VERSION"));
self::$connected=true;
unset($configs); }}/** * get all records *@param string $sql
* @return unknown
*/
public static function getAll($sql=null){
if($sql! =null) {self::query($sql);
}
$result=self::$PDOStatement->fetchAll(constant("PDO::FETCH_ASSOC"));
return $result;
}
/** * get a record * in the result set@param string $sql
* @return mixed
*/
public static function getRow($sql=null){
if($sql! =null) {self::query($sql);
}
$result=self::$PDOStatement->fetch(constant("PDO::FETCH_ASSOC"));
return $result;
}
/** * find records by primary key *@param string $tabName
* @param int $priId
* @param string $fields
* @return mixed
*/
public static function findById($tabName,$priId,$fields=The '*'){
$sql='SELECT %s FROM %s WHERE id=%d';
return self::getRow(sprintf($sql,self::parseFields($fields),$tabName,$priId));
}
/** * Perform a common query *@param unknown $tables
* @param string $where
* @param string $fields
* @param string $group
* @param string $having
* @param string $order
* @param string $limit
* @return Ambigous <unknown, unknown, multitype:>
*/
public static function find($tables,$where=null,$fields=The '*',$group=null,$having=null,$order=null,$limit=null){
$sql='SELECT '.self::parseFields($fields).' FROM '.'`.$tables.'`
.self::parseWhere($where)
.self::parseGroup($group)
.self::parseHaving($having)
.self::parseOrder($order)
.self::parseLimit($limit);
// echo $sql;
$dataAll=self::getAll($sql);
// return count($dataAll)==1? $dataAll[0]:$dataAll;
return $dataAll;
}
/** * Add record operation *@param array $data
* @param string $table
* @return Ambigous <boolean, unknown, number>
*/
public static function add($data,$table){
$keys=array_keys($data);
array_walk($keys,array('PdoMySQL'.'addSpecialChar'));
$fieldsStr=join(', ',$keys);
$values="'".join("', '",array_values($data))."'";
$sql="INSERT INTO `{$table}`({$fieldsStr}) VALUES({$values})";
// echo $sql;
return self::execute($sql);
}
/** * Update record *@param array $data
* @param string $table
* @param string $where
* @param string $order
* @param string $limit
* @return Ambigous <boolean, unknown, number>
*/
public static function update($data,$table,$where=null,$order=null,$limit=0){
foreach($data as $key=>$val){
$sets.="`".$key."` = '".$val."',";
}
$sets=rtrim($sets,', ');
$sql="UPDATE {$table} SET {$sets} ".self::parseWhere($where).self::parseOrder($order).self::parseLimit($limit);
// echo $sql;
return self::execute($sql);
}
/** * Delete record operation *@param string $table
* @param string $where
* @param string $order
* @param number $limit
* @return Ambigous <boolean, unknown, number>
*/
public static function delete($table,$where=null,$order=null,$limit=0){
$sql="DELETE FROM `{$table}` ".self::parseWhere($where).self::parseOrder($order).self::parseLimit($limit);
return self::execute($sql);
}
/ * * * * /
public static function truncate($table){
$sql="TRUNCATE TABLE `{$table}` ";
return self::execute($sql);
}
/** * get the last SQL statement executed *@return boolean|Ambigous <string, string>
*/
public static function getLastSql(a){
$link=self::$link;
if(! $link)return false;
return self::$queryStr;
}
/** * get AUTO_INCREMENT * from the previous insert@return boolean|string
*/
public static function getLastInsertId(a){
$link=self::$link;
if(! $link)return false;
return self::$lastInsertId;
}
/** * get the version of the database *@return boolean|mixed
*/
public static function getDbVerion(a){
$link=self::$link;
if(! $link)return false;
return self::$dbVersion;
}
/** * get table * from database@return multitype:mixed
*/
public static function showTables(a){
$tables=array(a);if(self::query("SHOW TABLES")){
$result=self::getAll();
foreach($result as$key=>$val){ $tables[$key]=current($val); }}return $tables;
}
/** * parse Where condition *@param unknown $where
* @return string
*/
public static function parseWhere($where){
$whereStr=' ';
if(is_string($where)&&!empty($where)){
$whereStr=$where;
}
return empty($whereStr)?' ':' WHERE '.$whereStr;
}
/** * group by *@param unknown $group
* @return string
*/
public static function parseGroup($group){
$groupStr=' ';
if(is_array($group)){
$groupStr.=' GROUP BY '.implode(', ',$group);
}elseif(is_string($group)&&!empty($group)){
$groupStr.=' GROUP BY '.$group;
}
return empty($groupStr)?' ':$groupStr;
}
** * Select group results by Having clause *@param unknown $having
* @return string
*/
public static function parseHaving($having){
$havingStr=' ';
if(is_string($having)&&!empty($having)){
$havingStr.=' HAVING '.$having;
}
return $havingStr;
}
/** * parse Order by *@param unknown $order
* @return string
*/
public static function parseOrder($order){
$orderStr=' ';
if(is_array($order)){
$orderStr.=' ORDER BY '.join(', ',$order);
}elseif(is_string($order)&&!empty($order)){
$orderStr.=' ORDER BY '.$order;
}
return $orderStr;
}
Limit * limit 3 * limit 0,3 *@param unknown $limit
* @return unknown
*/
public static function parseLimit($limit){
$limitStr=' ';
if(is_array($limit)){
if(count($limit)>1){
$limitStr.=' LIMIT '.$limit[0].', '.$limit[1];
}else{
$limitStr.=' LIMIT '.$limit[0]; }}elseif(is_string($limit)&&!empty($limit)){
$limitStr.=' LIMIT '.$limit;
}
return $limitStr;
}
/** * parse the field *@param unknown $fields
* @return string
*/
public static function parseFields($fields){
if(is_array($fields)){
array_walk($fields,array('PdoMySQL'.'addSpecialChar'));
$fieldsStr=implode(', ',$fields);
}elseif(is_string($fields)&&!empty($fields)){
if(strpos($fields,'`) = = =false){
$fields=explode(', ',$fields);
array_walk($fields,array('PdoMySQL'.'addSpecialChar'));
$fieldsStr=implode(', ',$fields);
}else{ $fieldsStr=$fields; }}else{
$fieldsStr=The '*';
}
return $fieldsStr;
}
/** * references the field with backquotes, *@param unknown $value
* @return string
*/
public static function addSpecialChar(&$value){
if($value===The '*'||strpos($value,'. ')! = =false||strpos($value,'`)! = =false) {// Don't do anything about it
}elseif(strpos($value,'`) = = =false){
$value='`.trim($value).'`;
}
return $value;
}
/** * Returns the number of affected records *@param string $sql
* @return boolean|unknown
*/
public static function execute($sql=null){
$link=self::$link;
if(! $link)return false;
self::$queryStr=$sql;
if(!empty(self::$PDOStatement))self::free();
$result=$link->exec(self::$queryStr);
self::haveErrorThrowException();
if($result || $result==0) {self::$lastInsertId=$link->lastInsertId();
self::$numRows=$result;
return self::$numRows;
}else{
return false; }}/** Release the result set */
public static function free(a){
self::$PDOStatement=null;
}
public static function query($sql=' '){
$link=self::$link;
if(! $link)return false;
// Determine if there is a result set before, if so, release the result set
if(!empty(self::$PDOStatement))self::free();
self::$queryStr=$sql;
self::$PDOStatement=$link->prepare(self::$queryStr);
$res=self::$PDOStatement->execute();
self::haveErrorThrowException();
return $res;
}
public static function haveErrorThrowException(a){
$obj=empty(self::$PDOStatement)?self::$link: self::$PDOStatement;
$arrError=$obj->errorInfo();
//print_r($arrError);
if($arrError[0]! ='00000') {self::$error='SQLSTATE: '.$arrError[0].' <br/>SQL Error: '.$arrError[2].'<br/>Error SQL:'.self::$queryStr;
self::throw_exception(self::$error);
return false;
}
if(self::$queryStr==' ') {self::throw_exception('SQL statement not executed');
return false; }}/** * Custom error handling *@param unknown $errMsg
*/
public static function throw_exception($errMsg){
echo '
'
.$errMsg.' ';
}
/** * Destroy connection object, close database */
public static function close(a){
self::$link=null;
}
public static function search($table1,$table2,$table3){
$PdoMySQL=new PdoMySQL();
$sql1="select * from ".$table1." where status='0'";
$sql2="select * from ".$table2." where status='0'";
$sql3="select * from ".$table3." where status='0'";
$stmt1=$PdoMySQL->prepare($sql1);
$stmt2=$PdoMySQL->prepare($sql2);
$stmt3=$PdoMySQL->prepare($sql3);
$stmt1->execute();
$stmt2->execute();
$stmt3->execute();
//echo $username.'<hr/>'.$password;
$row1=$stmt1->fetch();
echo $row1[0]; }}? >
Copy the code
Finally, there is a super BOSS, an official website of the company with powerful functions, including interface encapsulation classes, image uploading (single image, multi-image), front-end Bootstrap and REST style interface.
Enterprise official website Pro version
portal