その 1:
PHP-MySQL は、MySQL データベースを操作するための PHP のオリジナルの拡張機能です。PHP-MySQLi の i は、拡張機能に関する限り、比較的高度な機能を提供します。 PDO (PHP Data Object) はデータベースを操作するための抽象化レイヤーを提供します。実際には違いがわかりませんので、プログラムを見てください...
まず、PHP で書かれた段落を見てみましょう。 MySQL プログラム コード、このような例は世界中で一般的に使用されています:
コードは次のとおりです:
mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($dn_name);
$result = mysql_query(" SELECT `name` FROM `users` WHERE `location` = '$location'");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo $row['name'];
}
mysql_free_result ($result);
?>
一見何も問題はありませんが、実は裏にある知識があります...
このメソッドは、前の SQL の説明で言えば、$location をバインドできません。 SQL インジェクションが起こりやすい。その後、この問題を解決するために mysql_escape_string() (注: 5.3.0 以降は非推奨) と mysql_real_escape_string() が開発されました。ただし、全体のストーリーは複雑で見苦しくなり、フィールドが多すぎるとどうなるかは想像できます。次のようになります...
コードは次のとおりです:
$query = sprintf("SELECT * FROM users WHERE user='%s' ANDpassword='%s'",
mysql_real_escape_string($user) ) ,
mysql_real_escape_string($password));
mysql_query($query);
?>
は、Bind Column を通じて上記の問題を解決することに加えて、トランザクションもサポートしています。 Multi Query のほか、オブジェクト指向スタイル (以下の PHP-MySQLi サンプルの記述方法) と手続き型スタイル (上記の PHP-MySQL サンプルの記述方法) の 2 つの記述メソッドも提供されます。
コードは次のとおりです:
$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);
$sql = "INSERT INTO `users` (id, name, 性別, location) VALUES (?, ?, ?, ?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param('dsss', $source_id, $source_name, $source_gender, $source_location) ;
$stmt->execute();
$stmt->bind_result($id, $name, $gender, $location);
while ($stmt->fetch())
{
echo $id . $name . $location;
}
$stmt->close();
?>
しかし、ここで次のような欠点が見つかりました。バインド結果、これは少し冗長ですが、実際には問題ありません。最大の問題は、これが抽象化メソッドではないため、バックエンドがデータベースを変更すると、痛みが始まります...
つまり、PDO が表示されます (注: 現在、Ubuntu と Debian の場合、PDO には直接インストールするパッケージはありませんが、PECL を通じてインストールする必要があります)。
コードは次のとおりです:
roga@carlisten-lx:~$ pecl search pdo
============================ ==== ========
パッケージ 安定版/(最新) ローカル
PDO 1.0.3 (安定版) PHP Data Objects Interface.
PDO_4D 0.3 (ベータ版) 4D-SQL データベース用 PDO ドライバー
PDO_DBLIB 1.0 (安定版) PDO 用 FreeTDS/Sybase/MSSQL ドライバー
PDO_FIREBIRD 0.2 (ベータ) PDO 用 Firebird/InterBase 6 ドライバー
PDO_IBM 1.3.2 (安定版) IBM データベース用 PDO ドライバー
PDO_INFORMIX 1.2.6 (安定版) IBM Informix INFORMIX 用 PDO ドライバーデータベース
PDO_MYSQL 1.0 .2 (安定版) PDO用MySQLドライバー
PDO_OCI 1.0 (安定版) PDO用Oracle Call Interfaceドライバー
PDO_ODBC 1.0.1 (安定版) PDO用ODBC v3インターフェースドライバー
PDO_PGSQL 1.0.2 (安定版) PostgreSQLドライバーPDO
PDO_SQLITE 1.0 .1 (安定版) SQLite v3 PDO
用のインターフェースドライバー pdo_user 0.3.0 (ベータ版) PDO
用のユーザースペースドライバー PECL を通じてインストールすると、次の方法でデータベースを操作できます:
コードは次のとおりです。 :
$dsn = "mysql:host=$db_host;dbname=$db_name";
$dbh = 新しい PDO($dsn, $db_user, $db_password);
$sql = "SELECT `name `, `location` FROM `users` WHERE `location` = ? , `name` = ?";
$sth = $dbh->prepare($sql);
$sth->execute(array($location) , $ name));
$result = $sth->fetch(PDO::FETCH_OBJ);
echo $result->gt;location;
$dbh = NULL;
?>
zar PDO のコードは短くないようですが、どのような利点がありますか?
1. PDO がデータベースに接続するとき、接続文字列を使用して接続するデータベースを決定します。
2. PDO は PDO::setAttribute を使用して、永続的な接続などの接続設定とエラー (例外、E_WARNING、NULL) を返す方法を決定できます。返されるフィールド名の場合も…など。
2. PDO は、基本的な準備と実行に加えて、列のバインド機能をサポートし、列のタイプを指定することもできます。
4. PDO は抽象化レイヤーであるため、記憶媒体を変更した場合でも、それに比べて必要な労力は最小限です。
残念ながら、これらは長い間存在していたにもかかわらず、まだ十分に普及していません。市販の本を読み慣れているせいもあると思いますが、その本では最もシンプルで伝統的な方法しか紹介されていないことが多いです。その結果、多くの人が依然として MySQL を使用してデータベースに直接接続しています。
ただし、現時点では個人的には、ActiveRecord や Propel ORM (オブジェクト リレーショナル マッピング) などの DBI を介してデータベースに接続することを好みます。
例えばActiveRecordを例に挙げると、このようなSQL文を実装したい場合…
INSERT INTO `users` (id, name, 性別, location) VALUES(1, 'roga', 'male', ' tpe')
PDO を使用して記述します:
コードは次のとおりです:
$sql = "INSERT INTO `users` (id, name, sex, location) VALUES(?, ?, ?, ? )";
$sth = $ dbh->prepare($sql);
$sth->execute(array(1, 'roga', 'male', 'tpe'));
?>
しかし、ActiveRecord に関して言えば、Yes:
コードは次のとおりです:
$user = new User();
$user->id = 1;
$user->name = ' roga';
$user->gender = 'male';
$user->location = 'tpe';
$user->save();
?>
後者の方がずっと簡単ではないでしょうかまた、SQL 言語への依存の必要性も大幅に軽減されます。 (さまざまなデータベースでの SQL 実装に関する質問については、「さまざまな SQL 実装の比較」を参照してください。) 上記は簡単な説明です。省略や誤りがある場合は、追加してください。
mysqlは非永続接続機能、mysqliは永続接続機能です。つまり、
mysql は接続されるたびに接続プロセスを開き、mysqli を複数回実行すると同じ接続プロセスが使用されるため、サーバーのオーバーヘッドが軽減されます。
プログラミング時に new mysqli('localhost', usenamer' を使用する人もいます)。 , 'password', 'databasename'); は常にエラーを報告します。致命的なエラー: クラス 'mysqli' が d: に見つかりません... mysqli クラスは PHP に含まれていませんか?
Win では、php.ini を変更し、php_mysqli.dll の前の「;」を削除する必要があります。Linux では、mysqli をコンパイルする必要があります。
1: Mysqli.dll を使用すると、データベースをオブジェクトまたはプロセス内で操作でき、その使用も非常に簡単です。ここでは、いくつかの一般的な操作と mysql.dll の比較を示します。
1: mysql.dll (機能的な方法として理解できます):
コードは次のとおりです:
$conn = mysql_connect('localhost', 'user', 'password') //mysqlデータベースに接続します。
mysql_select_db('data_base '); //データベースを選択します
$result = mysql_query('select * from data_base');//オープン接続を指定するための 2 番目のオプションのパラメータがあります
$row = mysql_fetch_row( $result ) ) // Simple の場合、ここでは 1 行のデータのみを取得します
Echo $row[0]; // 最初のフィールドの値を出力します
Mysqli にも手続き型メソッドがありますが、それは mysqli プレフィックスで始まるだけです。それ以外はほぼ同じです。 mysqli が手続き型で動作する場合、一部の関数は mysqli_query (リソース識別子、SQL ステートメント) などのリソースを指定する必要があり、リソース識別子のパラメーターは前に配置されますが、mysql_query (SQL ステートメント、「オプション」) のパラメーターは前に配置されます。リソース識別子は最後に配置され、デフォルトで最後に開かれた接続またはリソースになります。
2mysqli.dll (オブジェクトモード):
コードは次のとおりです:
$conn = new mysqli('localhost', 'user', 'password','data_base');
//ここでの接続は新しいです、そして最後に 1 つのパラメータはデータベースを直接指定するもので、mysql_select_db() は必要ありません
//構築時に指定することもできません、その場合は $conn ->('data_base')
$result = $conn -> query( 'select * from data_base ' );
$row = $result -> fetch_row(); //データの行を取得します
echo row[0] //最初のフィールドの値を出力します
2: mysql_fetch_row(),mysql_fetch_array()
このどちらの関数も配列を返します。違いは、最初の関数によって返される配列には、配列の添字 $row[0],
$row[1] を使用したデータのみが含まれることです。 . 、そして mysql_fetch_array() によって返される配列には、キーと値のペアの最初のタイプと形式の両方が含まれています。 (データベースのフィールドがユーザー名、パスワードの場合):
$row[ 'username'], $row['passwd']
さらに、($row as $kay => $value)で操作すると、データベースのフィールド名を直接取得することもできます。
さらに重要なのは、mysqli が php5 によって提供される新しい関数ライブラリであり、その実行速度が向上しているということです。

MySQLスロークエリを最適化するには、slowquerylogとperformance_schemaを使用する必要があります。1。LowerQueryLogを有効にし、しきい値を設定して、スロークエリを記録します。 2。performance_schemaを使用してクエリの実行の詳細を分析し、パフォーマンスのボトルネックを見つけて最適化します。

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

MySQL非同期マスタースレーブレプリケーションにより、BINLOGを介したデータの同期が可能になり、読み取りパフォーマンスと高可用性が向上します。 1)マスターサーバーレコードはBinlogに変更されます。 2)スレーブサーバーは、I/Oスレッドを介してBINLOGを読み取ります。 3)サーバーSQLスレッドは、BINLOGを適用してデータを同期させます。

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

MySQLのインストールと基本操作には、次のものが含まれます。1。mysqlをダウンロードしてインストールし、ルートユーザーパスワードを設定します。 2。sqlコマンドを使用して、createdatabaseやcreateTableなどのデータベースとテーブルを作成します。 3. CRUD操作を実行し、挿入、選択、更新、コマンドを削除します。 4.パフォーマンスを最適化し、複雑なロジックを実装するためのインデックスとストアドプロシージャを作成します。これらの手順を使用すると、MySQLデータベースをゼロから構築および管理できます。

Innodbbufferpoolは、データとインデックスページをメモリにロードすることにより、MySQLデータベースのパフォーマンスを向上させます。 1)データページは、ディスクI/Oを削減するためにBufferPoolにロードされます。 2)汚れたページは、定期的にディスクにマークされ、リフレッシュされます。 3)LRUアルゴリズム管理データページの排除。 4)読み出しメカニズムは、可能なデータページを事前にロードします。

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

完全なテーブルスキャンは、MySQLでインデックスを使用するよりも速い場合があります。特定のケースには以下が含まれます。1)データボリュームは小さい。 2)クエリが大量のデータを返すとき。 3)インデックス列が高度に選択的でない場合。 4)複雑なクエリの場合。クエリプランを分析し、インデックスを最適化し、オーバーインデックスを回避し、テーブルを定期的にメンテナンスすることにより、実際のアプリケーションで最良の選択をすることができます。


ホット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
使いやすく無料のコードエディター

ホットトピック



