3 つのクラスがあります:
1. フィルター入力 (軽量)
input_filter クラス
$_GET、$_POST などのパラメーターのフィルター処理を担当します
戻り値の型は配列であり、made_sql クラスのパラメーターとして使用されます
2. SQL文へ
class made_sql
パラメータの型は配列とテーブル名(文字列)、配列のキー名はテーブルの列名、値は挿入値です
戻り値の型は文字列で、次のように使用されますmysql ->query メソッド パラメータ
3. データベース クエリ
class mysql
シングルカラム モードを使用し、静的メソッドを使用してオブジェクトを取得します。詳細については、instanceof 演算子の関数を参照してください
コードをコピー コードは次のとおりです:
class input_filter
{
private $input_all; // フィルタリングされる配列
private $rustle; // フィルタリングされた結果
// コンストラクターのパラメーターは、これらの
public function __construct($input_C)
if(is_array) ($input_C))
$this-> ;input_all = $input_C ;
else
echo 'パラメータが無効です';
//初期化しないと、初めて配列をマージするときに PHP がその型を認識しません
$ this->rustle = array();
}
private function filter_arr() // メイン関数
{
foreach ($this->input_all as $key_input =>$val_input)
{
//If キーname が文字列ではない場合、エラー メッセージを返します
// キー
if(!is_string($key_input)) // エラー
{
echo 'このキーは文字列ではありません'
return false;
// # は mysql Note です。
$key_one = str_replace('#' ,'',$key_input);
$key = htmlspecialchars($key_one,ENT_QUOTES,'UTF-8'); が見つかりませんでした。 # の HTML エスケープ文字なので、何も置き換えません
$val_one = str_replace(' #','',$val_input); この関数は を変換するだけです。すべてのシンボル
$val = htmlspecialchars($val_one,ENT_QUOTES,'UTF-8' );
// マージ
$rustle_one = array($key=>$val);
// 配列をマージ
$this-> Rustle = array_merge($this->rustle,$rustle_one);
}
}
//この関数は少し冗長なので、将来の拡張のために残しておきます
public function get_filter_rustle()
{
$this->filter_arr( );
return $this->rustle ;
}
}
メソッドの呼び出し:
コードをコピーする コードは次のとおりです:
$filter = new filter_input($_GET) // または $_POST
$input_data = $ filter->get_filter();
SQL ステートメントに変換します:
コードをコピーします。 コードは次のとおりです:
class madesql
{
private $Cnow_ary
private $Cname_str; ; //最後の SQL ステートメントの文字列型
public function __construct($Cary,$Cname)
{
// 受け取ったパラメータの型が配列かどうかを確認します
if (! is_array($Cary))
return false; $this->Cnow_ary = $Cary; // 書き込まれた値
$this->Cname_str = $ Cname; // データベーステーブル名
25 }
private function setSql() // メイン関数、SQL ステートメントを生成します
{
foreach ( $this->Cnow_ary as $key_ary => $val_ary )
{
$cols_sql = $cols_sql.','.$key_ary //列名の組み合わせ
$vals_sql = $vals_sql.', '' .$val_ary.''' ; //値の組み合わせ
}
// 前の foreach アルゴリズムに問題があるため、最初の文字はカンマです
// したがって、最初の桁から削除するには sunstr_replace() を使用します(0)、1 文字のみを置換します (1)
$cols_sql = substr_replace($vals_sql,'',0,1);
$vals_sql = substr_sql,'',0,1); ;insert_sql =
'INSERT INTO '.$this->Cname_str.' ( '
.$cols_sql.' ) VALUES ( '.$vals_sql.' )' // ステートメント整形
}
// 拡張子
public の場合function getSql()
{
$this->setSql();
return $this->insert_sql;
}
3. データベース クエリ クラスは、書籍では単一列モードを参照しています (静的メソッドを使用してオブジェクトを取得し、スクリプト内にデータベース クエリ クラスのインスタンスが 1 つだけ存在するようにします)
このクラスではシングルトン モードが少し使用されていると思います。使用される
コピー コードは次のとおりです:
class mysql
{
private $connect;
static $objectMysql; // オブジェクトを保存します
private function __construct() 7 {
// このコンストラクターはオブジェクトの作成時に呼び出されます。初期化には
$connect = mysql_connect('db address' ,'パスワード','データベース名');$this->db = mysql_select_db('db',$connect);
}
public static function Mysql_object()
{
//instanceof 演算子は、オブジェクトがクラスまたはインターフェイスのインスタンスに属しているかどうかを確認するために使用されます。私が言ったことはあまり標準的ではありません...
//$objectMysql が mysql(self) のインスタンスではない場合は、インスタンスを作成します
if(! self::$objectMysqlinstanceof self)
self::$objectMysql = new mysql () ;
//この時点で $objectMysql はすでにオブジェクトです
return self::$objectMysql;
}
public function query($sql)
{
return mysql_query($sql,$this->db);
}
}
それでは、使い方をまとめます
コードをコピー コードは次のとおりです。
$filter = new filter_input($_GET) // または $_POST
$input_data = $filter->get_filter( );
$ madeSql($input_data,'テーブル名');
$mysql = mysql::Mysql_object() ; ($sql) )
echo 'Ok';
else
echo 'failure';
データベースへの書き込み操作を完了するには、これらの数行のコードのみが必要です
さらに、プライベートとパブリックについて話しましょう。コンストラクターの問題、本の mysql シングルトン モード コンストラクターは private として宣言されており、シングルトン モードのないクラスはコンパイル エラーを生成します。つまり、PHP はオブジェクトを作成できません。
その理由は、オブジェクトの作成がクラスの外で行われることが多く、コンストラクターにアクセスできないという問題が発生するためです。 単一列モードでは、独自のクラスにオブジェクトが作成されるため、プライベート メソッドへのアクセスに制限はありません。
当初、シングルトン モードは同じオブジェクトの作成を防ぐだけだと思っていましたが、シングルトン モードではコンストラクターをカプセル化できるようです。これにより、filter_input クラスの結果をパラメーターとして直接使用できるという前提が得られます。 madesql クラスの内容は次のとおりです:
フォームの名前はデータベースの列名と同じである必要があります。そうしないと、多くのことが無駄になります

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ホットトピック



