原因
データベース関連の知識に注目していない
数か月前、私は誤って次のコードを開いてしまいました:
文句を言われたことはN年前に書かれたものです。その後、学習にも必要になり、mysql だけでは適さなくなりました。そこで、何か良い方法はないかとネットで探したところ、PDO を見つけました。
誘惑
インターネットを閲覧しているときに、次の一節を見つけました:
PHP データ オブジェクト (PDO) 拡張機能は、PHP でデータベースにアクセスするための軽量で一貫したインターフェイスを定義します。PDO インターフェイスを実装する各データベース ドライバーは、データベース固有の機能を通常の拡張機能として公開できます。 PDO 拡張機能自体は、データベース サーバーにアクセスするためにデータベース固有の PDO ドライバーを使用する必要があります。 PDO はデータ アクセス抽象化レイヤーを提供します。つまり、使用しているデータベースに関係なく、同じ関数を使用してクエリを発行し、データをフェッチします。PDO はデータベース抽象化を提供せず、SQL を書き換えません。または、不足している機能をエミュレートする必要がある場合は、本格的な抽象化レイヤーを使用する必要があります。 |
PDO 拡張機能は、PHP がデータベースにアクセスするための軽量で永続的なインターフェイスを定義します。 PDO インターフェイスを実装する各データベース ドライバーは、定期的な拡張形式でそれぞれの特性を表現できます。注: PDO 拡張機能自体を使用しても、データベース関数は実装されません。データベースにアクセスするには、特定のデータベース PDO ドライバーを使用する必要があります。 PDO はデータ アクセス抽象化レイヤーを提供します。これは、使用しているデータベースに関係なく、同じ関数を使用してデータのクエリと取得を行うことができることを意味します。 PDO はデータ抽出を提供せず、SQL ステートメントを書き換えたり、これらの関数を模倣したりしません。必要に応じて、本格的な抽出レイヤーを使用する必要があります。 |
初対面
労働者が仕事をうまくやりたいなら、まず道具を研ぐ必要があります。 php5のインストールについて説明しましたphp.iniの設定について話しましょう。 まず、次のことを知っておく必要があります:
php.ini
では、前のセミコロンを削除すると、その関数が使用できることを意味します。 わかりました、
php.iniを開きます(メモ帳で開くことができます) ファイル内で次の行を見つけます
extension=php_pdo_firebird.dll
extension=php_pdo_informix.dll extension=php_pdo_mssql.dll extension=php_pdo_mysql.dll extension=php_pdo_oci.dll extension=php_pdo_oci8.dll 拡張子=php_pdo_odbc.dll extension=php_pdo_pgsql.dll extension=php_pdo_sqlite.dll
前のセミコロンを削除するだけです(ここではすでに削除しています)。 php.iniを設定するときは注意し、変更する前にバックアップを作成してください。一度間違いを修正したのですが、それによって php が動作しなくなってしまいました。何が問題なのかまだわかりませんでした。 。 このように、pdoがインストールされます 遊んでみてください
最初に行うのは、もちろんデータベースへの接続方法を確認することです それには PDO クラスがあり、新しい pdo オブジェクトを作成します。これは次のようになります 文法を見て、最初の文が出てきます~(≧▽≦)/~
その中で、mysqlはデータベースの種類、localostはホスト名、testはデータベース名、dbuserはユーザー名、データベースパス はパスワードです
注意してくださいtry/catchコードブロック、PDO操作を常にtry/catchコードブロック内にカプセル化し、例外メカニズムを使用する必要があります
以下はネチズンの文章図であり、私の文章を 1 つの文に組み合わせたものです
以下はエラー処理です
PDO は、3 でさまざまなエラー処理戦略を提供します。
これはデフォルトで使用されるモードです。 PDOは、statementとdatabaseオブジェクトに簡単なエラーコードを設定します。PDO->errorCode()、PDO->errorInfo()を使用できます。 メソッドを使用してエラーを確認します。エラーが statement オブジェクトの呼び出しによって発生した場合は、そのオブジェクトに対して PDOStatement->errorCode() または PDOStatement-> を使用できます。 () メソッドはエラー情報を取得します。 database オブジェクトの呼び出し時にエラーが発生した場合は、この database オブジェクトでこれら 2 つのメソッドを呼び出す必要があります。
PDO::ERRMODE_WARNING
エラーコードの設定に加えて、PDO は従来のE_WARNINGメッセージを発行します。この設定は、デバッグ時や、プログラムの流れを中断せずに何が問題になったのかだけを確認したい場合に便利です。
PDO::ERRMODE_EXCEPTION
がエラー コードのある添付ファイルとして設定されている場合、PDO は PDOException 例外をスローし、エラー コードとエラー情報を反映するようにそのプロパティを設定します。この設定は、スクリプト内のエラー ポイントを効果的に「爆破 (爆破)」し、コード内のエラーの可能性のある領域を非常に迅速に示すため、デバッグ時にも非常に役立ちます。 (例外によってスクリプトが中断された場合、トランザクションは自動的にロールバックされることに注意してください。)
Exception モードは、従来の PHP スタイルのエラー処理構造よりも明確な構造を使用してエラーを処理でき、クワイエット モードを使用するよりも使用するコードとネストが少なく、戻り値をより明示的にチェックできるため、非常に便利です。各データベースアクセスの値。
上記のコードに戻ると、エラーが発生した場合、 catchがそれをキャッチし、開発者が設定した内容に従ってさらに処理します。 。
接続はここで終了します。 。
攻撃
接続後はどうすればよいですか?そうです、データを処理しないのにデータベースは何の役に立つのでしょうか?以下はすべて 2 つのバージョンで提供されます:
テーブルがあるとしますzjyz
ID
1
2
データクエリ 1としてidを使用してデータ MYSQLバージョン:
PDOバージョン:
ほら、あまり変わらないみたいですね~~
データ更新 idのデータを1に更新し、nameの値をccc MYSQLバージョン:
PDOバージョン: このexecの方がずっと新鮮だと思います
データを削除 idが1のデータ MYSQLバージョン:
PDOバージョン: はは、それでもexecは行数を返します
データを挿入 データを挿入したい id = 3 , name = ccc MYSQLバージョン:
PDOバージョン:
楽しい幹部() この機能は上で何度も登場していますが、ここで簡単に紹介します PDO::exec() 単一の関数呼び出しで SQL ステートメントを実行し、このステートメントによって影響を受ける行数を返します。 PDO::exec() は、 SELECT ステートメントからの結果を返しません。プログラム内で 1 回だけ発行する必要がある SELECT ステートメントの場合は、 PDO::query() の使用を検討できます。複数回発行する必要があるステートメントの場合、 PDO::prepare() を使用して PDOStatement オブジェクトを準備し、 PDOStatement::execute() を使用してステートメントを発行できます。
概要
このテクノロジーは少し古いですが、古い文章に比べればまだ活気があります。研究が進むにつれて、ルルはこの記事では触れられていない多くのことも学びました。皆さんありがとうございます~(≧▽≦)/~
他にもたくさんあります。 。 。データベースに関係するすべての操作は基本的に PDO に置き換えられました
とても嬉しいです テクノロジーは死んだ、しかし人々は生きている。古いテクノロジーを活用して新しい未来を創造します。 この記事の参考文献:
著作権 |