/**
* データベース操作クラス
* 2011/8/25
*kcj
**/
クラス MyDB {
プライベート $db_host //データベースホスト名
プライベート $db_user //データベース ユーザー名
プライベート $db_pwd //データベースパスワード
;
プライベート $db_database //データベース名
プライベート $conn //接続 ID
private $result; //実行したクエリコマンドの結果リソース識別子
private $row //返されるエントリの数
プライベート $sql; //SQL 実行ステートメント
プライベート $coding //データベースエンコーディング
Private $bulletin=true; // エラーログを有効にするかどうか
Private $show_error=false; //テスト段階ではすべてのエラーが表示されますが、これにはセキュリティ上のリスクがあり、デフォルトでは閉じられます
Private $is_error=false; //エラーが検出されたときにすぐに終了するかどうか、デフォルトは true ですが、問題が発生したときに何も表示されないのはユーザーにとって非常に不快なため、有効にしないことをお勧めします
//コンストラクター関数
関数 __construct($db_host,$db_user,$db_pwd,$db_database,$conn,$doding){
$this->db_host=$db_host;
$this->db_user=$db_user;
$this->db_pwd=$db_pwd;
$this->db_database=$db_database;
$this->conn=$conn;
$this->coding=$coding;
$this->connect();
}
//データベース接続
パブリック関数 connect(){
If($this->conn=="pconn"){
// 永久接続
$this->conn=mysql_pconnect($this->db_host,$this->db_user,$this->db_pwd);
}その他{
外出
$this->conn=mysql_connect($this->db_host,$this->db_user,$this->db_pwd);
}
If(!mysql_select_db($this->db_database,$this->conn)){
If($this->show_error){
}
}
//データベース実行ステートメント、実行可能クエリ、追加、変更、削除などの SQL ステートメント
パブリック関数クエリ($sql){
if($sql==""){
$this->show_error("SQL ステートメント エラー:","SQL ステートメントが空です");
}
$this->sql=$sql;
$result=mysql_query($this->sql,$this->conn);If(!$result){
If($this->show_error){
$this->show_error("SQL ステートメントのエラー: ",$this->sql);
}else {
$this->結果
}
$ の結果を返します。
}
//新しいデータベースを作成して追加します
パブリック関数 create_database($database_name){
$database=$database_name;
$sqlDatabase='データベースの作成'.$database;
$this->query($sqlDatabase);
}
//サーバー上のすべてのデータベースをクエリします
//より直感的に表示できるように、システム データベースをユーザーから分離します
パブリック関数 show_database(){
$this->query("データベースを表示");
echo "現在のデータベース:".$amount=$this->db_num_rows($rs);
「
」をエコーします。
$i=1;
while ($row=$this->fetch_array($rs)){
echo "$i $row[データベース]";
echo "
";
$i++;
}
}
//ホスト内のすべてのデータベース名を配列の形式で返します
パブリック関数データベース(){
$rsPtr=mysql_list_dbs($this->conn);
$i=0;
$cnt=mysql_num_rows($rsPtr);
ながら ($i
$rs[]=mysql_db_name($rsPtr,$i);
$i++;
}
$rs を返します。
}
//データベース内のすべてのテーブルをクエリします
パブリック関数 show_tables($database_name){
$this->query("show tables");
echo "既存のデータベース:".$amount=$this->db_num_rows($rs);
エコー "
";
$i=1;
while ($row=$this->fetch_array($rs)){
$columnName="Tables_in_".$database_name;
echo "$i $row[$columnName]";
echo "
";
$i++;
}
}
// 結果セットを取得します
パブリック関数 fetch_array($resultt=""){
If($resultt!=""){
return mysql_fetch_array($resultt);
}else {
return mysql_fetch_array($this->result);
}
}
//結果の数を取得 $row['content']
パブリック関数 mysql_result_li(){
戻り mysql_result($str);
}
//連想配列を取得 $row['フィールド名']
パブリック関数 fetch_assoc(){
return mysql_fetch_assoc($this->result);
}
//数値インデックス配列を取得 $row[0] $row[1] $row[2]
パブリック関数 fetch_row(){
return mysql_fetch_row($this->result);
}
// オブジェクト配列を取得し、$row->content を使用します
パブリック関数 fetch_Object(){
return mysql_fetch_object($this->result);
}
// 簡略化されたクエリ選択
パブリック関数 findall($table){
$this->query("select* from $table");
}
// 簡略化されたクエリ選択
パブリック関数 select($table,$columnName="*",$condition='',$debug=''){
$condition=$condition?'where'.$condition:null;
if($debug){
echo "$table $condition から $columnName を選択します";
}その他{
$this->query("select $columnName from $table $condition");
}
}
//削除を簡略化します del
パブリック関数 delete($table,$condition,$url=''){
If($this->query("$condition の $table から削除")){
If(!emptyempty($url)){
$this->Get_admin_msg($url,'削除に成功しました');
}
}
// 簡略化された挿入
パブリック関数 insert($table,$columnName,$value,$url=''){
If($this->query("$table ($columnName) の値 ($value) に挿入")){
If(!emptyempty($url)){
$this->Get_admin_msg($url,'正常に追加されました');
}
}
// 簡素化された更新アップデート
パブリック関数 update($table,$mod_content,$condition,$url=''){
If($this->query("update $table set $mod_content where $condition")){
If(!emptyempty($url)){
$this->Get_admin_msg($url);
}
}
//前の挿入操作の ID を取得します
public function insert_id(){
return mysql_insert_id();
}
//指向确定的一条数据记录
public function db_data_seek($id){
if($id>0){
$id=$id-1;
}
if(!@mysql_data_seek($this->result,$id)){
$this->show_error("sql语句有误:","指定的数据为空");
}
return $this->result;
}
//根据select查询结果计算结果集条数
public function db_num_rows(){
if($this->result=null){
if($this->show_error){
$this->show_error("sql语句错误:","暂时为空,没有任何内容");
}
}else{
return mysql_num_rows($this->result);
}
}
//根据insert update delete执行的结果驱动影响行数
public function db_affected_rows(){
return mysql_affected_rows();
}
//输出显示sql语句
public function show_error($message="",$sql=""){
if(!$sql){
echo "" . $message . "";
echo "
";
}else{
echo "
"; }
//結果セットを解放します
パブリック関数 free(){
@mysql_free_result($this->結果); }
//データベースの選択
パブリック関数 select_db($db_database){
mysql_select_db($db_database) を返します
}
//フィールド数を問い合わせる
パブリック関数 num_fields($table_name){
$this->query("select * from $table_name"); エコー "
"; echo "フィールドの数:".$total=mysql_num_fields($this->result); for ($i=0;$i print_r(mysql_fetch_field($this->result,$i)); }
エコー ""; エコー "
"; }
//mysqlサーバー情報を取得します
パブリック関数 mysql_server($num=''){
スイッチ ($num){
ケース 1:
return mysql_get_server_info(); 休憩
ケース 2:
return mysql_get_host_info(); 休憩
ケース 3:
return mysql_get_client_info(); 休憩
ケース 4:
return mysql_get_proto_info(); 休憩
デフォルト:
return mysql_get_client_info(); }
}
パブリック関数 __destruct(){
If(!emptyempty($this->result)){
$this->free(); }
Mysql_close($this->conn); }
//クライアントの実際のIDアドレスを取得します
関数 getip() {
If (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
$ip = getenv("HTTP_CLIENT_IP"); } 他
If (getenv("HTTP_X_FORWARDED_FOR") &&strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
$ip = getenv("HTTP_X_FORWARDED_FOR"); } 他
If (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
$ip = getenv("REMOTE_ADDR"); If (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] &&strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
$ip = $_SERVER['REMOTE_ADDR']; $ip = "不明"; リターン ($ip); }
}
?>
/**
* データベース操作クラス
* 2011/8/25
*kcj
**/
クラス MyDB {
private $db_host; //データベースホスト名
private $db_user //データベースのユーザー名
private $db_pwd //データベースパスワード
private $db_database; //データベース名
private $conn //接続ID
private $result; //実行したクエリコマンドの結果リソース識別子
private $row; //返されたエントリの数
private $sql; // SQL 実行文
private $coding; //データベースエンコーディング
private $bulletin=true; // エラーログを有効にするかどうか
private $show_error=false; //テスト段階ではすべてのエラーが表示されますが、これにはセキュリティ上のリスクがあり、デフォルトでは閉じられます
Private $is_error=false; //エラーが検出されたときにすぐに終了するかどうか、デフォルトは true ですが、問題が発生したときに何も表示されないのはユーザーにとって非常に苦痛であるため、有効にしないことをお勧めします
//コンストラクター
function __construct($db_host,$db_user,$db_pwd,$db_database,$conn,$doding){
$this->db_host=$db_host;
$this->db_user=$db_user;
$this->db_pwd=$db_pwd;
$this->db_database=$db_database;
$this->conn=$conn;
$this->coding=$coding;
$this->connect();
}
//データベース接続
パブリック関数 connect(){
if($this->conn=="pconn"){
//永続接続
$this->conn=mysql_pconnect($this->db_host,$this->db_user,$this->db_pwd);
}その他{
//繋がっていても
$this->conn=mysql_connect($this->db_host,$this->db_user,$this->db_pwd);
}
if(!mysql_select_db($this->db_database,$this->conn)){
If($this->show_error){
$this->show_error("データベースが利用できません:",$this->db_database);
}
}
}
//データベース実行文、クエリの追加、変更、削除などあらゆるSQL文を実行可能
パブリック関数クエリ($sql){
if($sql==""){
$this->show_error("SQL ステートメント エラー:","SQL ステートメントが空です");
}
$this->sql=$sql;
$result=mysql_query($this->sql,$this->conn);
if(!$result){
If($this->show_error){
$this->show_error("SQL ステートメントのエラー:",$this->sql);
}
}その他{
$this->結果;
}
$result を返します;
}
// 新しいデータベースを作成して追加します
パブリック関数 create_database($database_name){
$database=$database_name;
$sqlDatabase='データベースの作成'.$database;
$this->query($sqlDatabase);
}
//サーバー上のすべてのデータベースをクエリします
//より直感的に表示できるように、システム データベースをユーザーから分離します
パブリック関数 show_database(){
$this->query("データベースの表示");
echo "現在のデータベース:".$amount=$this->db_num_rows($rs);
echo "
";
$i=1;
while ($row=$this->fetch_array($rs)){
echo "$i $row[データベース]";
echo "
";
$i++;
}
}
//ホスト内のすべてのデータベース名を配列形式で返します
パブリック関数データベース(){
$rsPtr=mysql_list_dbs($this->conn);
$i=0;
$cnt=mysql_num_rows($rsPtr);
while ($i $rs[]=mysql_db_name($rsPtr,$i);
$i++;
}
$rs を返します;
}
//データベース内のすべてのテーブルをクエリします
パブリック関数 show_tables($database_name){
$this->query("テーブルを表示");
echo "既存のデータベース:".$amount=$this->db_num_rows($rs);
echo "
";
$i=1;
while ($row=$this->fetch_array($rs)){
$columnName="Tables_in_".$database_name;
echo "$i $row[$columnName]";
echo "
";
$i++;
}
}
// 結果セットを取得します
パブリック関数 fetch_array($resultt=""){
if($resultt!=""){
mysql_fetch_array($resultt)を返します;
}その他{
mysql_fetch_array($this->result)を返します;
}
}
//結果の数を取得 $row['content']
パブリック関数 mysql_result_li(){
mysql_result($str);を返します
}
//連想配列を取得 $row['フィールド名']
パブリック関数 fetch_assoc(){
mysql_fetch_assoc($this->result)を返します;
}
//数値インデックス配列を取得 $row[0] $row[1] $row[2]
パブリック関数 fetch_row(){
mysql_fetch_row($this->result)を返します;
}
// オブジェクト配列を取得し、$row->content を使用します
パブリック関数 fetch_Object(){
mysql_fetch_object($this->result)を返します;
}
//クエリ選択を単純化します
パブリック関数 findall($table){
$this->query("select* from $table");
}
//クエリ選択を単純化します
public function select($table,$columnName="*",$condition='',$debug=''){
$condition=$condition?'どこ'.$condition:null;
if($debug){
echo "$table $condition から $columnName を選択";
}その他{
$this->query("$table $condition から $columnName を選択");
}
}
//削除を簡略化します del
public function delete($table,$condition,$url=''){
if($this->query("$condition の $table から削除")){
If(!empty($url)){
$this->Get_admin_msg($url,'正常に削除されました');
}
}
}
//挿入を簡略化します
public function insert($table,$columnName,$value,$url=''){
If($this->query("$table ($columnName) の値 ($value) に挿入")){
If(!empty($url)){
$this->Get_admin_msg($url,'正常に追加されました');
}
}
}
//アップデート更新を簡素化します
public function update($table,$mod_content,$condition,$url=''){
if($this->query("update $table set $mod_content where $condition")){
if(!empty($url)){
$this->Get_admin_msg($url);
}
}
}
//取得上一步insert操作的id
public function insert_id(){
return mysql_insert_id();
}
//指向确定的一条数据记录
public function db_data_seek($id){
if($id>0){
$id=$id-1;
}
if(!@mysql_data_seek($this->result,$id)){
$this->show_error("sql语句有误:","指定的数据为空");
}
return $this->result;
}
//根据select查询结果计算结果集条数
public function db_num_rows(){
if($this->result=null){
if($this->show_error){
$this->show_error("sql语句错误:","暂时为空,没有任何内容");
}
}else{
return mysql_num_rows($this->result);
}
}
//根据insert update delete执行的结果驱动影响行数
public function db_affected_rows(){
return mysql_affected_rows();
}
//输出显示sql语句
public function show_error($message="",$sql=""){
if(!$sql){
echo "" . $message . "";
echo "
";
}else{
echo "";
echo "
";
}
//結果セットを解放します
パブリック関数 free(){
@mysql_free_result($this->result);
}
//データベースの選択
パブリック関数 select_db($db_database){
mysql_select_db($db_database) を返します;
}
//フィールド数を問い合わせる
パブリック関数 num_fields($table_name){
$this->query("select * from $table_name");
echo "
";
echo "フィールド数:".$total=mysql_num_fields($this->result);
for ($i=0;$i Print_r(mysql_fetch_field($this->result,$i));
}
echo "";
echo "
";
}
//mysqlサーバー情報を取得します
パブリック関数 mysql_server($num=''){
スイッチ ($num){
ケース1:
return mysql_get_server_info();
休憩
ケース 2:
return mysql_get_host_info();
休憩
ケース 3:
return mysql_get_client_info();
休憩
ケース4:
return mysql_get_proto_info();
休憩
デフォルト:
return mysql_get_client_info();
}
}
パブリック関数 __destruct(){
if(!empty($this->result)){
$this->free();
}
mysql_close($this->conn);
}
//クライアントの実際のIDアドレスを取得します
関数 getip() {
If (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
$ip = getenv("HTTP_CLIENT_IP");
} 他
If (getenv("HTTP_X_FORWARDED_FOR") &&strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
} 他
If (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
$ip = getenv("REMOTE_ADDR");
} else
If (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] &&strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
$ip = $_SERVER['REMOTE_ADDR'];
} else {
$ip = "不明";
}
return ($ip);
}
}
?>
chaojie2009 さんのコラムより抜粋

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。

XSS攻撃を防ぎ、リソースのロードを制限し、ウェブサイトのセキュリティを改善できるため、CSPは重要です。 1.CSPはHTTP応答ヘッダーの一部であり、厳格なポリシーを通じて悪意のある行動を制限します。 2。基本的な使用法は、同じ起源からのロードリソースのみを許可することです。 3.高度な使用法は、特定のドメイン名がスクリプトやスタイルをロードできるようにするなど、より微調整された戦略を設定できます。 4。CSPポリシーをデバッグおよび最適化するには、コンテンツセキュリティポリシーレポートのみのヘッダーを使用します。

HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

HTTPSは、HTTPに基づいてセキュリティレイヤーを追加するプロトコルであり、主に暗号化されたデータを介してユーザーのプライバシーとデータセキュリティを保護します。その作業原則には、TLSの握手、証明書の確認、暗号化された通信が含まれます。 HTTPSを実装する場合、証明書管理、パフォーマンスへの影響、および混合コンテンツの問題に注意を払う必要があります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

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

ホットトピック



