第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

使用mysqli連接數(shù)據(jù)庫(kù)應(yīng)該怎么修改框架呢

請(qǐng)問(wèn)老師,要使用mysqli來(lái)操作mysql數(shù)據(jù)庫(kù)應(yīng)該怎么修改DB類(lèi)和mysql類(lèi)啊,不理解DB類(lèi)和mysql類(lèi)之間的關(guān)聯(lián),求解釋

正在回答

4 回答

請(qǐng)問(wèn)一下連接數(shù)據(jù)庫(kù)那部分中的public?function?connect($config?=?''),為什么要$config=''

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

xdfcc

給個(gè)默認(rèn)值為了讓代碼更嚴(yán)謹(jǐn)一點(diǎn)!自己寫(xiě)的時(shí)候知道要傳哪些參數(shù),如果別人用你寫(xiě)的公共函數(shù)可能不知道要傳什么參數(shù),如果忘記傳參或者傳數(shù)量不對(duì)都會(huì)出現(xiàn)未知錯(cuò)誤,顯然程序中沒(méi)有考慮這些,其實(shí)$config = ''也不夠嚴(yán)謹(jǐn),可以有更多處理
2017-11-10 回復(fù) 有任何疑惑可以回復(fù)我~

如果mysqli采用面向?qū)ο蟮乃枷朐撛趺唇鉀Q呢?

0 回復(fù) 有任何疑惑可以回復(fù)我~

我用的就是mysqli類(lèi),可以分享一下。已經(jīng)過(guò)初步測(cè)試,能用。深度測(cè)試還沒(méi)做。

<?php
class?mysqliDB{
????public?static?$mysqli?=?null;
????/*
????*?報(bào)錯(cuò)函數(shù)
????*?@param?string?$err
????*/
????function?error($err){
????????die("對(duì)不起,您的操作有誤,錯(cuò)誤原因?yàn)椋??.?$err);
????}
????/*
????*?連接數(shù)據(jù)庫(kù)
????*連接mysqli?:?mysqli是mysql的增強(qiáng)版本,用pdo連接數(shù)據(jù)庫(kù)效率要比mysql直*接連接要慢,綜合考慮,本人嘗試用mysqli以面象對(duì)象的方式操作數(shù)據(jù)庫(kù)
????*?@param?string?$config
????*???@param?string?$dbhost?主機(jī)名
????*???@param?string?$dbuser?用戶名
????*???@param?string?$dbpwd?密碼
????*???@param?string?$dbname?數(shù)據(jù)庫(kù)名
????*???@param?string?$dbcharset?字符集/編碼
????*?@return?boolean
????*/
//????public?function?__construct($config?=?''){
????public?function?connect($config?=?''){
????????if(!class_exists('mysqli')){
????????????$this->error('不支持mysqli,請(qǐng)先開(kāi)啟');
????????}
????????if(is_array($config)?&&?!empty($config)){
????????????extract($config);
???????
????????????if(empty($dbhost)){
????????????????$this->error('沒(méi)有定義數(shù)據(jù)庫(kù)配置');
????????????}
????????}
????????if(!isset(self::$mysqli)){
????????????try{
????????????????self::$mysqli?=?new?mysqli($dbhost,$dbuser,$dbpwd,$dbname);
????????????}catch(mysqli_sql_exception?$e){
????????????????$this->error($e->getMessage);
????????????}

????????????if(self::$mysqli->errno){
????????????????error('('.?self::$mysqli->errno?.?')'?.?self::$mysqli->error);
????????????????return?false;
????????????}
????????????if(!self::$mysqli->set_charset("utf8")){
????????????????error('('.?self::$mysqli->errno?.?')'?.?self::$mysqli->error);
????????????}
????????????return?self::$mysqli;
????????}
????????
????}
????
????/*
????*?執(zhí)行sql語(yǔ)句
????*?@param?string?$sql
????*?@return??bool?返回成功、資源、失敗
????*/
????function?query($sql){
???????
????????if((($query?=?mysqli_query(self::$mysqli,$sql)))?===?false){
????????????$this->error($sql?.?'<br/>'?.?mysqli_error(self::$mysqli));
????????}else{
??????????
????????????return?$query;
????????}
????}
????
????/*
????*?列表
????*?@param?source?$query??sql語(yǔ)句通過(guò)mysqli_query執(zhí)行出來(lái)的資源
????*?@return?array?列表數(shù)組
????*/
????function?findAll($query){
????????return?mysqli_fetch_all($query,MYSQLI_ASSOC);
????}
????
????/*
????*?單條
????*?@param?source?$query??sql語(yǔ)句通過(guò)mysqli_query執(zhí)行出來(lái)的資源
????*?@return?array?單條信息數(shù)組
????*/
????function?findOne($query){
????????return?mysqli_fetch_array($query,MYSQLI_ASSOC);
????}
????/*?
????*?指定行的指定字段的值
????*?@param?source?$query?sql語(yǔ)句通過(guò)mysqli_query執(zhí)行出來(lái)的資源
????*?@return?array?返回指定行的指定字段值
????*/
????function?findResult($query,$row=0,$field=0){
????????mysqli_data_seek($query,$row);
????????return?mysqli_fetch_row($query)[$field];
????}
????
????/*
????*?添加行
????*?@param?string?$table
????*?@param?array?$arr?添加數(shù)組?(二維數(shù)組)
????*???[['name'=>'cat1','age'=>1],['name'=>'cat2','age'=>2],...]
????*?@return?返回插入的id
????*/
????function?insert($table,$arr){
????????
????????$keys?=?array_keys($arr[0]);
????????array_walk($keys,array('mysqliDB','addSpecialChar'));
????????$fields?=?join(',',$keys);
????????$binds?=?'('.?str_replace('?',',',?trim(str_repeat("??",count($arr[0]))))?.?')';
????????$types?=?$this->getTypes($arr[0]);
????????$this->addSpecialChar($table);
????????$sql?=?"INSERT?INTO?{$table}({$fields})?VALUES?{$binds}?";

????????$stmt?=?self::$mysqli->prepare($sql);
????????if(!$stmt){
????????????$this->error("sql?stament?為空");
????????}
????????foreach($arr?as?$k?=>?$v){
????????????extract($v);
????????????foreach($v?as?$k1?=>?$v1){
????????????????eval('$vals[\''.?$k?.?'\']?[\''.?$k1?.?'\']?=?&$'?.?$k1?.?';');
????????????}
????????????unset($k1,$v1);
????????????
????????}
????????unset($k,$v);
???
????????$store?=?array();
????????foreach($vals?as?$v){
????????????call_user_func_array(array($stmt,?'bind_param'),?array_merge(array($types),?$v));
????????????mysqli_stmt_execute($stmt);
????????????$store[]?=?$stmt->insert_id;
????????}
????????unset($v);
????????return?$store;??
????}
????
????/*
????*?注防sql注放按照insert的方法
????*?修改函數(shù)?
????*?@param?string?$table
????*?@param?array?$arr?修改數(shù)組(一維數(shù)組)
????*?@param?string?$where?條件?array('and'?=>?array('name'=>?'cat1',?id=>?7),?'or'?=>?array('sex'?=>?1));
????*?@return?
????*/
????function?update($table,$arr,$where){
????????
????????$kArr?=?array();
????????foreach($arr?as?$k?=>?$v){
????????????$v?=?mysqli_real_escape_string(self::$mysqli,$v);
????????????$kArr[]?=?$this->addSpecialChar($k)?.?"='"?.$v?.?"'";
????????}
????????$kArr?=?implode(",",?$kArr);
????????$this->addSpecialChar($table);
????????$sql?=?"update?"?.$table?.?"?set?"?.?$kArr?.?"?where?"?.?$where;
//????????return?$sql;
????????$this->query($sql);
????}
????
????/*
????*?刪除函數(shù)
????*?@param?string?$table?表名
????*?@param?string?$where?條件
????*/
????function?del($table,$where){
????????$this->addSpecialChar($table);
????????$sql?=?"delete?from?{$table}?where?{$where}";
//????????return?$sql;
????????$this->query($sql);
????}
????
????
????/*
????*獲取參數(shù)類(lèi)型首字母
????*?@param?array?$arr?
????*/
????
????function?getTypes($arr=array()){
????????$strType?=?'';
????????if(!empty($arr)){
????????????foreach($arr?as?$var){
????????????????$chrType?=?substr((string)gettype($var),0,1);
????????????????$strType?.=?(!in_array($chrType,array("i","d","s")))???"b"?:?$chrType;
????????????}
????????}
????????
????????return?$strType;
????}
????
????/*
????*?通過(guò)反引號(hào)引用字段
????*?@param?unknown?$value
????*?@return?string
????*/
????function?addSpecialChar(&$value){
????????if($value==='*'||strpos($value,'.')!==false||strpos($value,'`')!==false){
????????????//不用做處理
????????}elseif(strpos($value,'`')===false){
????????????$value='`'.trim($value).'`';
????????}
????????return?$value;
????}
????
}


1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕粉3511118

請(qǐng)問(wèn)一下連接數(shù)據(jù)庫(kù)那部分中的public function connect($config = ''),為什么要$config=''
2016-12-21 回復(fù) 有任何疑惑可以回復(fù)我~

我們可以根據(jù)DB類(lèi)來(lái)使用其他的數(shù)據(jù)庫(kù)而不僅僅是mysql;mysql類(lèi)只是封裝了mysql數(shù)據(jù)庫(kù)的操作方法。DB類(lèi)是一個(gè)大工廠,mysql類(lèi)是這個(gè)工廠里的一個(gè)生產(chǎn)車(chē)間,當(dāng)然也有另外的生產(chǎn)車(chē)間,個(gè)人是這么理解的。

1 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

使用mysqli連接數(shù)據(jù)庫(kù)應(yīng)該怎么修改框架呢

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)