亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\test\email\app\PdoMySQL.class.php on line 44

<?php?

//header('content-type:text/html;charset=utf-8');

class PdoMySQL{

public static $config=array();//設置連接參數,配置信息

public static $link=null;//保存連接標識符

public static $pconnect=false;//是否開啟長連接

public static $dbVersion=null;//保存數據庫版本

public static $connected=false;//是否連接成功

public static $PDOStatement=null;//保存PDOStatement對象

public static $queryStr=null;//保存最后執行的操作

public static $error=null;//報錯錯誤信息

public static $lastInsertId=null;//保存上一步插入操作產生AUTO_INCREMENT

public static $numRows=0;//上一步操作產生受影響的記錄的條數

/**

* 連接PDO

* @param string $dbConfig

* @return boolean

*/

public function __construct($dbConfig=''){

if(!class_exists("PDO")){

self::throw_exception('不支持PDO,請先開啟');

}

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('沒有定義數據庫配置,請先定義');

self::$config=$dbConfig;

if(empty(self::$config['params']))self::$config['params']=array();

if(!isset(self::$link)){

$configs=self::$config;

if(self::$pconnect){

//開啟長連接,添加到配置數組中

$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連接錯誤');

return false;

}

self::$link->exec('SET NAMES '.DB_CHARSET);

self::$dbVersion=self::$link->getAttribute(constant("PDO::ATTR_SERVER_VERSION"));

self::$connected=true;

unset($configs);

}

}

/**

* 得到所有記錄

* @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;

}

/**

* 得到結果集中的一條記錄

* @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;

}

/**

* 根據主鍵查找記錄

* @param string $tabName

* @param int $priId

* @param string $fields

* @return mixed

*/

public static function findById($tabName,$priId,$fields='*'){

$sql='SELECT %s FROM %s WHERE id=%d';

return self::getRow(sprintf($sql,self::parseFields($fields),$tabName,$priId));

}

/**

* 執行普通查詢

* @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='*',$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);

$dataAll=self::getAll($sql);

return count($dataAll)==1?$dataAll[0]:$dataAll;

}

/*

array(

'username'=>'imooc',

'password'=>'imooc',

'email'=>'[email protected]',

'token'=>'123abc',

'token_exptime'=>'123123',

'regtime'=>'123456'

)

INSERT user(username,password,email,token,token_exptime,regtime)?

VALUES('aa','aa','[email protected]','bb','123123','123456')

*/

/**

* 添加記錄的操作

* @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 {$table}({$fieldsStr}) VALUES({$values})";

//echo $sql;

return self::execute($sql);

}?

/*

?array(

'username'=>'imooc111',

'password'=>'imooc222',

'email'=>'[email protected]',

'token'=>'4444',

'token_exptime'=>'1234444',

'regtime'=>'12345678'

)

UPDATE user SET username='imooc111',password='imooc222'.... WHERE id<=38 ORDER BY username limit 0,1

*/

/**

* 更新記錄

* @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."',";

}

//echo $sets;

$sets=rtrim($sets,',');

$sql="UPDATE {$table} SET {$sets} ".self::parseWhere($where).self::parseOrder($order).self::parseLimit($limit);

return self::execute($sql);

}

/**

* 刪除記錄的操作

* @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);

}

/**

* 得到最后執行的SQL語句

* @return boolean|Ambigous <string, string>

*/

public static function getLastSql(){

$link=self::$link;

if(!$link)return false;

return self::$queryStr;

}

/**

* 得到上一步插入操作產生AUTO_INCREMENT

* @return boolean|string

*/

public static function getLastInsertId(){

$link=self::$link;

if(!$link)return false;

return self::$lastInsertId;

}

/**

* 得到數據庫的版本

* @return boolean|mixed

*/

public static function getDbVerion(){

$link=self::$link;

if(!$link)return false;

return self::$dbVersion;

}

/**

* 得到數據庫中數據表

* @return multitype:mixed?

*/

public static function showTables(){

$tables=array();

if(self::query("SHOW TABLES")){

$result=self::getAll();

foreach($result as $key=>$val){

$tables[$key]=current($val);

}

}

return $tables;

}

/**

* 解析Where條件

* @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;

}

/**

* 對分組結果通過Having子句進行二次刪選

* @param unknown $having

* @return string

*/

public static function parseHaving($having){

$havingStr='';

if(is_string($having)&&!empty($having)){

$havingStr.=' HAVING '.$having;

}

return $havingStr;

}

/**

* 解析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;

}

/**

* 解析字段

* @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='*';

}

return $fieldsStr;

}

/**

* 通過反引號引用字段,

* @param unknown $value

* @return string

*/

public static function addSpecialChar(&$value){

if($value==='*'||strpos($value,'.')!==false||strpos($value,'`')!==false){

//不用做處理

}elseif(strpos($value,'`')===false){

$value='`'.trim($value).'`';

}

return $value;

}

/**

* 執行增刪改操作,返回受影響的記錄的條數

* @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){

self::$lastInsertId=$link->lastInsertId();

self::$numRows=$result;

return self::$numRows;

}else{

return false;

}

}

/**

釋放結果集

*/

public static function free(){

self::$PDOStatement=null;

}

public static function query($sql=''){

$link=self::$link;

if(!$link) return false;

//判斷之前是否有結果集,如果有的話,釋放結果集

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(){

$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語句');

return false;

}

}

/**

* 自定義錯誤處理

* @param unknown $errMsg

*/

public static function throw_exception($errMsg){

echo '<div style="width:80%;background-color:#ABCDEF;color:black;font-size:20px;padding:20px 0px;">

'.$errMsg.'

</div>';

}

/**

* 銷毀連接對象,關閉數據庫

*/

public static function close(){

self::$link=null;

}

}

// require_once 'config.php';

// $PdoMySQL=new PdoMySQL;

//var_dump($PdoMySQL);

// $sql='SELECT * FROM user1';

// print_r($PdoMySQL->getAll($sql));

// $sql='SELECT * FROM user WHERE id=36';

// print_r($PdoMySQL->getRow($sql));

// $sql='INSERT user(username,password,email,token,token_exptime,regtime)';

// $sql.=" VALUES('imooc1113','imooc1113','[email protected]','abcdefgh','1392348346','12313346')";

// //echo $sql;

// var_dump($PdoMySQL->execute($sql));

// echo '<hr/>';

// echo $PdoMySQL::$lastInsertId;

// $sql='DELETE FROM user WHERE id>=37';

// var_dump($PdoMySQL->execute($sql));

// $sql='UPDATE user SET username="king1234" WHERE id=36';

// var_dump($PdoMySQL->execute($sql));

// $tabName='user';

// $priId='36';

// //$fields='username,email';

// $fields=array('username','email','regtime');

// $fields='*';

// print_r($PdoMySQL->findById($tabName,$priId,$fields));

//print_r($PdoMySQL->findById($tabName, $priId));

$tables='user';

//print_r($PdoMySQL->find($tables));

//print_r($PdoMySQL->find($tables,'id>=30'));

// print_r($PdoMySQL->find($tables,'id>=30','username,email'));

//print_r($PdoMySQL->find($tables,'id<=10','*','status'));

//print_r($PdoMySQL->find($tables,'id<=10','*','status','count(*)>=6'));

//print_r($PdoMySQL->find($tables,'id>5','*',null,null,'username desc,id desc'));

//print_r($PdoMySQL->find($tables,null,'*',null,null,null,array(3,5)));

// $data= array(

// 'username'=>'imooc',

// 'password'=>'imooc',

// 'email'=>'[email protected]',

// 'token'=>'123abc',

// 'token_exptime'=>'123123',

// 'regtime'=>'123456'

// );

// var_dump($PdoMySQL->add($data,$tables));

// $data=array(

// 'username'=>'imooc111',

// 'password'=>'imooc222',

// 'email'=>'[email protected]',

// 'token'=>'4444',

// 'token_exptime'=>'1234444',

// 'regtime'=>'12345678'

// );

//var_dump($PdoMySQL->update($data,$tables,'id<=38',' id DESC','2'));


//var_dump($PdoMySQL->delete($tables,'id>35'));

//var_dump($PdoMySQL->delete($tables,'id>3','id DESC','5'));

//print_r($PdoMySQL->showTables());





正在回答

1 回答

Warning:?PDO::__construct():?MySQL?server?has?gone?away?in?C:\xampp\htdocs\test\email\app\PdoMySQL.class.php?on?line?44

Warning:?PDO::__construct():?Error?while?reading?greeting?packet.?PID=18924?in?C:\xampp\htdocs\test\email\app\PdoMySQL.class.php?on?line?44

Warning:?Uncaught?exception?'PDOException'?with?message?'SQLSTATE[HY000]?[2006]?MySQL?server?has?gone?away'?in?C:\xampp\htdocs\test\email\app\PdoMySQL.class.php:44?Stack?trace:?#0?C:\xampp\htdocs\test\email\app\PdoMySQL.class.php(44):?PDO->__construct('mysql:host=loca...',?'root',?'root',?Array)?#1?C:\xampp\htdocs\test\email\app\doAction.php(15):?PdoMySQL->__construct()?#2?{main}?thrown?inC:\xampp\htdocs\test\email\app\PdoMySQL.class.php?on?line?44

Fatal?error:?Maximum?execution?time?of?30?seconds?exceeded?in?C:\xampp\htdocs\test\email\app\PdoMySQL.class.php?on?line?44

http://img1.sycdn.imooc.com//55e456140001ae7213660768.jpg


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\test\email\app\PdoMySQL.class.php on line 44

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號