PHP MySQLi拡張機能に基づくデータベース運用モデル
<?php/*****************************Model类(使用MySQL扩展访问数据库)******************************/class Model{ private $table; //数据库链接 private $link; //最后一次执行的sql语句 private $sql; private $tableString; private $fieldString; private $whereString; private $orderString; private $limitString; //初始化类 public function __construct($tableName){ $dbinfo=array( 'hostname'=>'192.168.1.246', 'username'=>'liuchuan', 'password'=>'liuchuan123', 'database'=>'whatcart' ); $this->link=new mysqli($dbinfo['hostname'],$dbinfo['username'],$dbinfo['password'],$dbinfo['database']); if($this->link->connect_errno) trigger_error('Error:Could not make a database link ('.$this->link->connect_errno.')'.$this->link->connect_errno); $this->link->set_charset("utf8"); $this->fieldString='*'; $this->tableString=$tableName; $this->leftJoinString=''; $this->whereString=''; $this->orderString=''; $this->limitString=''; } /********封装的MySQLI扩展方法********/ //参数过滤,输入参数只能是基本类型或一维数组 public function escape($param){ if(is_array($param)){ foreach ($param as $key => $value) { $param[$key]=$this->link->real_escape_string($value); } }else{ $param=$this->link->real_escape_string($value); } return $param; } //获取插入后生成的ID public function getLastId(){ return $this->link->insert_id; } //获取影响的行数 public function countAffected(){ return $this->link->affected_rows; } //执行SQL命令返回TRUE或FALSE public function execute($sql){ $this->sql=$sql; $result=$this->link->real_query($this->sql); if(false===$result){ trigger_error('<br/>ERROR MESSAGE:'.$this->link->error.'<br/>THE SQL:'.$this->sql); return false; }else{ $sql=strtolower($this->sql); return (false===strpos($sql,'insert')?true:$this->link->insert_id;//如果包含insert就返回插入记录的ID } } //执行SQL查询返回关联数组 public function query($sql){ $result=$this->link->real_query($sql); $this->sql=$sql; if($result!==false){ $record=array(); $list=array(); while($record=$result->fetch_assoc()){ $list[]=$record; } return $list; }else{ trigger_error('<br/>ERROR MESSAGE:'.$this->link->error.'<br/>THE SQL:'.$this->sql); return false; } } /********单表增删查改********/ public function create($table,$model){ $fields=''; $values=''; foreach ($model as $key => $value) { if($fields){ $fields.=','; } $fields.="`$key`"; if($values){ $values.=','; } $values.=is_numeric($value)?$value:"'".$this->link->real_escape_string($value)."'"; } $this->sql="INSERT INTO `$table`($fields) VALUES($values)"; if(false===$this->link->real_query($this->sql)) trigger_error('<br/>ERROR MESSAGE:'.$this->link->error.'<br/>THE SQL:'.$this->sql); return $this->link->insert_id; } public function modify($table,$model,$where){ $assins=''; $where=$this->rewhere($where); foreach ($model as $key => $value) { $rkey=$this->link->real_escape_string($key); $rvalue=$this->link->real_escape_string($value); if(!is_numeric($rvalue)){ $rvalue="'".$rvalue."'"; } $assins.=$assins?",`$rkey`=$rvalue":"`$rkey`=$rvalue"; } $result=$this->link->real_query($this->sql); if(false===$result) trigger_error('<br/>ERROR MESSAGE:'.$this->link->error.'<br/>THE SQL:'.$this->sql); } public function remove($table,$where){ $where=$this->rewhere($where); $this->sql="DELETE FROM `$table` WHERE $where"; $result=$this->link->real_query($this->sql); if(false===$result) trigger_error('<br/>ERROR MESSAGE:'.$this->link->error.'<br/>THE SQL:'.$this->sql); return $flag; } public function unique($where){ $where=$this->rewhere($where); $this->sql="SELECT * FROM `$table` WHERE $where LIMIT 1"; $result=$this->link->real_query($this->sql); if($result===false) trigger_error('<br/>ERROR MESSAGE:'.$this->link->error.'<br/>THE SQL:'.$this->sql); return $result -> fetch_object(); } public function countRow($where){ $where=$this->rewhere($where); $this->sql=($where=='')?"SELECT COUNT(*) as 'totalRow' FROM `{$this->tableString}`":"SELECT COUNT(*) FROM `{$this->tableString}` WHERE $where"; $result=$this->link->real_query($this->sql); if($result===false) trigger_error('<br/>ERROR MESSAGE:'.$this->link->error.'<br/>THE SQL:'.$this->sql); $record=$result->fetch_Object(); return $record->totalRow; } //按条件查找函数 public function search($table,$fields,$leftJoin='',$where='',$order='',$limit=''){ if(is_array($fields)) $fields=implode(",",$fields); $this->sql=empty($fields)?"SELECT * FROM `$table`":"SELECT $fields FROM `$table`"; if(!empty($where)){ $where=$this->rewhere($where); $this->sql.=" WHERE $where"; } if(!empty($order)) $this->sql.=" ORDER BY $order"; if(!empty($order)) $this->sql.="LIMIT $limit"; $result=$this->link->real_query($this->sql); if($result===false){ trigger_error('<br/>ERROR MESSAGE:'.$this->link->error.'<br/>THE SQL:'.$this->sql); }else{ $tempItem=array(); $tempList=array(); while($tempItem=$result -> fetch_assoc()){ if(!empty($tempItem['create_time'])) $tempItem['create_time_exp']=date('Y-m-d H:i:s',$tempItem['create_time']); if(!empty($tempItem['add_time'])) $tempItem['add_time_exp']=date('Y-m-d H:i:s',$tempItem['end_time']); if(!empty($tempItem['start_time'])) $tempItem['start_time_exp']=date('Y-m-d H:i:s',$tempItem['start_time']); if(!empty($tempItem['end_time'])) $tempItem['end_time_exp']=date('Y-m-d H:i:s',$tempItem['end_time']); $tempList[]=$tempItem; }; return $tempList; } } public function keyIn($ids){ if(!empty($ids)){ return false; } if(is_array($ids)){ foreach ($ids as $key => $value) { $ids[$key]=$this->link->real_escape_string($value); } $ids=implode(',',$ids); }else{ $ids=$this->link->real_escape_string($ids); } $primary=$this->getPrimaryKey(); if(!empty($this->whereString)) $this->whereString.=" AND "; $this->whereString.="`$primary` in ($ids)"; return $this; }/******************仿ThinkPHP的链式操作*******************************/ //设置查询的字段 public function field($field){ if(is_array($field)) $field=implode(',',$field); $this->fieldString=$field; return $this; } public function table($table){ $this->tableString=$table; } public function order($order){ $this->orderString=$order; } public function limit($limit){ $this->limitString=$limit; } //将数组格式的条件组装成字符串 public function where($where){ if(is_array($where)&&count($where)>0){ $str=''; foreach($where as $key=>$value){ if(!empty($str)){ $str.=' AND '; } $rekey=$this->link->real_escape_string($key); $revalue=$this->link->real_escape_string($value); $str.=is_numeric($revalue)?"`$rekey`=$revalue":"`$rekey`='$revalue'"; } $this->whereString=$str; }else{ $this->whereString=$where; } return $this; } //删除 public function delete(){ if(empty($this->whereString)) trigger_error('<br/>ERROR MESSAGE:删除条件不可以是空'); $this->sql="DELETE FROM {$this->tableString} WHERE {$this->whereString}"; } //更新 public function update($model){ if(empty($this->whereString)) trigger_error('<br/>ERROR MESSAGE:更新条件不可以是空'); if(empty($model)||count($model)==0) trigger_error('<br/>ERROR MESSAGE:更新参数不可以是空') $assins=''; foreach ($model as $key => $value) { $rkey=$this->link->real_escape_string($key); $rvalue=$this->link->real_escape_string($value); if(!is_numeric($rvalue)){ $rvalue="'".$rvalue."'"; } $assins.=$assins?",`$rkey`=$rvalue":"`$rkey`=$rvalue"; } $this->sql="UPDATE {$this->tableString} SET $assins WHERE {$this->whereString}"; } //查询 public function select(){ $this->sql="SELECT {$this->fieldString} FROM {$this->tableString}"; if(!empty($this->whereString)) $this->sql.=' WHERE '.$this->whereString; if(!empty($this->orderString)) $this->sql.=' ORDER BY '.$this->orderString; if(!empty($this->limitString)) $this->sql.=' LIMIT '.$this->limitString; return $this->query($this->$sql); } /*开发环境用于调试的语句,生产环境可以删除*/ public function getSql(){ return $this->sql; }}

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。
