検索
ホームページバックエンド開発PHPチュートリアルPHP データベース ドライバー、データを接続するさまざまな方法 研究ノート_PHP チュートリアル

PHP データベース ドライバー、データを接続するさまざまな方法 研究ノート_PHP チュートリアル

Jul 13, 2016 am 10:31 AM
ウェブ開発エンタープライズセキュリティ情報技術セキュリティソフトデータベースモバイル開発システムセキュリティウェブサイトのセキュリティサイバーセキュリティネットワーク技術ソフトウェア開発

目次

1. PHP データベースドライバーの紹介
2. PHP でデータベースに接続するさまざまな方法
1. PHP データベースドライバーの紹介
ドライバーは、特定の種類のデータベース サーバーと対話するように設計されたソフトウェア コードの一部です。ドライバーはいくつかのライブラリを呼び出す場合があります。 Javaのデータベースドライバーの概念に似ています
コードをコピー
1.JDBC-ODPC ブリッジ:
JDBC API を ODPC API にマッピングします。次に、JDBC-ODPC にデータベースのローカル ドライバー コード (つまり、データベース メーカーが提供するデータベース操作バイナリ コード ライブラリ (Oracle の oci.dll など)) を呼び出します
2. ローカル API ドライバー
JDBC API をデータベース固有のクライアント API に直接マッピングします。つまり、データベース メーカーが提供するローカル コード ライブラリ (C/C++ など) をクライアント経由でロードします
3. ネットワークプロトコルドライバー (メインストリーム)
このタイプのドライバーは、クライアントにネットワーク API を提供します。クライアント上の JDBC ドライバーは、ソケット (ソケット) を使用してサーバー上のミドルウェア プログラムを呼び出し、そのリクエストを必要な特定の API 呼び出しに変換します。
4. ローカルプロトコルドライバー (メインストリーム)
このタイプのドライバーは、ソケットを使用してクライアントとデータベースの間で直接通信します。データベースインスタンスと直接対話するJDBCです
このドライバーは、データベースで使用される基盤となるプロトコルを認識しており、現在使用されている最も主流の JDBC ドライバーでもあります。
コードをコピー
PHP の場合、ネットワーク プロトコル ドライバーとローカル プロトコル ドライバー、つまり MySQL クライアント ライブラリと MySQL ネイティブ ドライバー ライブラリも一般的に使用されます。 これらのライブラリは、MySQL データベース サーバーと対話するための低レベル プロトコルを実装します。
データベース ドライバーは、PHP とデータベース間の通信の最下層にあり、さまざまなデータベース ベンダーが、特定のデータベースの基本機能と高度な機能を提供するために、特定のフレームワークに基づいて独自のドライバーを実装します。
ドライバー層の最上位には、PHP コードとデータベースを接続するために使用される「コネクター」またはアダプター抽象化層があり、プログラマは PDO (PHP データベース オブジェクト) を使用するか、拡張インターフェイス (mysql、mysqli) を直接使用してこれらを公開できます。出てくるAPIは基盤となるデータベースと通信します。
データベース製造元によって提供される基盤となるデータベースドライバー
mysql: http://www.mysql.com/products/connector/
オラクル: http://www.oracle.com/technetwork/indexes/downloads/index.html#database
SQLサーバー: http://msdn.microsoft.com/zh-cn/library/cc296170(SQL.90).aspx
...
ファイルデータベース
File はファイルベースのデータベース エンジンであり、ファイル I/O (入出力) 関数を使用して、ディスク上のファイルにデータベースを保存したり、ファイルからデータベースを読み取ります。一般に、リレーショナル データベース (Mysql など) (一般的なファイル データベースなど) よりもはるかに小さいです
SQLite コマンド ライン バージョンのサイズは 200 KB 未満です) 同時に、ファイル データベースは使い慣れた SQL コマンドのほとんどをサポートしており、持ち運びが簡単です。
次に、上記の全体像から始めて、PHP がデータベースに接続するさまざまな方法と、さまざまなビジネス シナリオにおけるメリットとデメリットを 1 つずつ学びましょう
2. PHP でデータベースに接続するさまざまな方法
0x1: 拡張 API インターフェースを使用してデータベースと通信します
PHP コードは、コアと、コア機能を形成するいくつかのオプションの拡張機能で構成されます。 mysqli や mysql などの PHP の MySQL 関連の拡張機能はすべて、PHP 拡張機能フレームワークに基づいて実装されています。
拡張機能の典型的な機能は、API を PHP プログラマーに公開し、プログラマーが拡張機能を使用できるようにすることです。もちろん、PHP 拡張フレームワークに基づいて開発され、API インターフェイスを PHP プログラマに公開しない拡張機能もいくつかあります。たとえば、PDO MySQL ドライバー拡張機能は API インターフェイスを PHP プログラマーに公開しませんが、その上の PDO レイヤーへのインターフェイスを提供します。
PHP 拡張機能の作成については別のブログ投稿を参照してください
http://www.cnblogs.com/LittleHann/p/3562259.html
実際のプログラミングではAPIを拡張してデータベースに接続する方法が最もよく使われます
拡張子=php_mysql.dll
これは、PHP アプリケーションが MySQL データベースと対話できるように設計および開発された初期の拡張機能です。 mysql 拡張機能はプロシージャ指向のインターフェイスを提供し、MySQL 4.1.3 以前向けに設計されています。したがって、この拡張機能は MySQL 4.1.3 以降のデータベース サーバーと対話できますが、それ以降の MySQL サーバーが提供する一部の機能はサポートしません
mysql 拡張機能のソース コードは、PHP 拡張機能ディレクトリ ext/mysql にあります
コードをコピー
// データベースに接続して選択します
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') または die('接続できませんでした: ' .mysql_error());
echo '接続に成功しました';
mysql_select_db('my_database') または die('データベースを選択できませんでした');
// SQL を実行します
$query = 'SELECT * FROM my_table';
$result = mysql_query($query) または die('クエリが失敗しました: ' . mysql_error());
// HTML 打印查询结結果
echo "n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "tn";
foreach ($line を $col_value として)
{
echo "tt$col_valuen";
}
echo "t
n";
}
echo "n";
// 释放结果集
mysql_free_result($result);
// 关闭连接
mysql_close($link);
?>
复制幣
拡張子=php_mysqli.dll
mysqli 拡張は、MySQL 拡張拡張と呼ばれており、MySQL4.1.3 または更新バージョンの新しい高レベルの機能を使用するために使用できます。mysqli 拡張は、PHP 5 以降のバージョンに含まれています。
mysqli扩展には一連の特典があり、mysql扩展の優先順位は次のとおりです:
复制幣
1. 面向对象インターフェース
2.準備された语サポート句(即パラメータ処理、有効な防御SQL注入の発生)
3. 多语句执行サポート
4. 事応援
5. 強化された调试能力
6. 嵌入式服务サポート
7.
オブジェクトへのインターフェイスが提供されると同時に、プロセスへのインターフェイスも提供されます。
复制幣
mysqli 展は PHP 展フレームを使用して構築されており、PHP ソースコード目录下の ext/mysqli 内にあるソースコードです
复制幣
$con = new mysqli("localhost", "root", "111", "php4fun_");
/* 接続を確認します */
if (mysqli_connect_errno())
{
printf("接続失敗: %sn", mysqli_connect_error());
exit();
}
$sql = "name = ? および pass = ? であるユーザーから名前を選択します。";
$cmd = $con->prepare($sql);
$name = $_GET['name'];
$pass = $_GET['pass'];
// SQL クエリにパラメータを追加します
$cmd->bind_param("ss", $name, $pass);
$cmd->execute();
$cmd->bind_result($result);
$cmd->fetch();
if($result)
{
var_dump($result);
}
?>
复制幣
mysqli除は、パラメータの承認処理を使用してデータ通信を実行でき、同時に面方向のコード化方式の使用もサポートします
复制幣
/* MySQL サーバーに接続します 连接続データベース库サービス务器 */
$link = mysqli_connect(
'localhost', /* 连接MySQL地址に接続するホスト */
'root', /* 连接MySQL用户名として接続するユーザー */
'111', /* 连接MySQL密码 を使用するためのパスワード */
'会社');    /* クエリを実行するデフォルトのデータベース 连接続データベース库名*/
if (!$link)
{
printf("MySQL サーバーに接続できません。エラーコード: %s ", mysqli_connect_error());   
終了
}
/* クエリをサーバーに送信します クエリリクエストをサーバーに送信します*/
if ($result = mysqli_query($link, 'SELECT * from p8_ad_user'))
{
print("非常に大きな都市は次のとおりです: ");
/* クエリの結果をフェッチする クエリの結果を返す */
while( $row = mysqli_fetch_assoc($result) )
printf("%s (%s) ", $row['Name'], $row['Population']);
}
/* 結果セットを破棄し、結果セットに使用されていたメモリを解放する クエリを終了してメモリを解放する */
mysqli_free_result($result);
}
/* 接続を閉じます 接続を閉じます*/
mysqli_close($link);
?>
コードをコピー
PHP は、関数呼び出しの仕様に従っている限り、他の多くのデータベース接続拡張機能もサポートしています。詳細については、
を参照してください。
http://www.php.net/manual/zh/refs.database.php
0x2: PDO 抽象化レイヤーを使用してデータベースと通信します
PDO (PHP Data Object PHP Database Object) は、PHP アプリケーションのデータベース抽象化レイヤー仕様です。 PDO は、PHP アプリケーションが接続するデータベース サーバー システムの特定の種類を気にしないようにするための統合 API インターフェイスを提供します。つまり、PDO の API を使用すると、PHP コードを少し変更するだけで、必要に応じていつでもデータベース サーバー (Firebird から MySQL など) をシームレスに切り替えることができます。
データベース抽象化レイヤーの他の例には、Java アプリケーションの JDBC や Perl の DBI などがあります。
注: PDO 拡張機能を使用するだけではデータベース関数を実装できません。データベース サービスにアクセスするには、特定のデータベースの PDO ドライバーを使用する必要があります (これは単なるインターフェイスの仕様です)
その一方で、インターフェースが提供する互換性が強ければ強いほど、そのカスタマイズ性と特異性は弱まります (これは簡単に理解できます)。PDO インターフェース API の主な欠点は、MySQL サーバーの使用が制限されることです。 . すべての高度なデータベース機能。たとえば、PDO では、MySQL でサポートされている複数ステートメントの実行を使用できません。
PHP5 では、PDO は現在多数のデータベースをサポートしており、PHP6 ではデフォルトのデータベース接続方法になります:
1.スクライト
2.mysql
3.pgsql
4.mssql
...
PDO は PHP 拡張フレームワークに基づいて実装されており、そのソース コードは PHP ソース コード ディレクトリの ext/pdo にあります
PDO は単なるインターフェイス仕様であることを再度強調します。それ自体ではデータベース機能を実装するものではありません。プログラマは、特定のデータベースにアクセスするために、特定のデータベースの「PDO ドライバー」を使用する必要があります。
拡張子=php_pdo_mysql.dll
コードをコピー
$dbhost="ローカルホスト";
$dbname="会社";
$dbusr="ルート";
$dbpwd="111";
$dbhdl=NULL;
$dbstm=NULL;
$opt = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',);
$dsn='mysql:host=' . $dbhost=';port=3306;dbname=' 。
試してみる
{
$dbhdl = 新しい PDO($dsn, $dbusr, $dbpwd, $opt);
//例外を表示します
$dbhdl->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
キャッチ (PDOExceptsddttrtion $e)
{
// PDOException を返す
印刷�エラー!:�。
死ね();
}
$dbstm = $dbhdl->query('SELECT * from p8_ad_user LIMIT 0,1');
$rows = $dbstm->fetchAll(PDO::FETCH_ASSOC);//$rows = $dbhdl->Fetch();
print_r($rows);
?>
复制幣
拡張子=php_pdo_pgsql.dll
复制幣
$host = "ローカルホスト";
$user = "root";
$pass = "111";
$db = "会社"; 
$cursor = "cr_123456";
試してみましょう
{
$dbh = 新しい PDO("pgsql:host=$host;port=5432;dbname=$db;user=$user;password=$pass");
echo "接続済み

";

}
catch (例外 $e)
{
echo "接続できません: " . $e->getMessage() ."

";

}
$dbh->beginTransaction();
$query = "SELECT * from p8_ad_user LIMIT 0,1"; 
$dbh->query($query); 
$query = ""$cursor" 内のすべてを取得";
echo "データの開始

"; 

foreach ($dbh->query($query) as $row)
{
echo "$row[0] $row[1] $row[2]
";
}
echo "データ終了";
?>
复制幣
ここでは Mysql、PostGreSQL だけを例に挙げますが、実際のところ、PDO はこのような抽象層方式で現在の主流の大部分のデータベースを接続でき、PDO は PHP6 のデータベース接続方式になる予定です。
http://www.php.net/manual/zh/book.pdo.php
0x3: ODBC 抽象層とデータテーブル通信を使用します
ODBC は、特定のデータソース (MS Access データ库など) に接続できるアプリケーションプログラムインターフェイス (API) です
グラフは、機能や構成などの接続方法を、プロシージャ言語およびデータベース認証 (SQL 標準化) によって標準化します。
ODBC の機能は、二重の重み付けを備えた接続または接続です。
1. まず、ODBC システムに適しているのは、プログラム言語システムです
2. 次に、データ ストレージ システムには ODBC システムが適しています。 したがって、ODBC には、「ODBC に対してはプログラム言語」の駆動プログラム (PHP-ODBC など) と、「データ記憶システムに対しては ODBC」の制御プログラム (MySQL-ODBC など) が必要です。 ODBC システム自体に加えて、ODBC はデータ ソースとプログラム ステートメントの間に存在するセキュリティを考慮してデータ ソースの構成を処理することもできます。
和前の学習 API インターフェイス、PDO とは異なりますが、ODBC 接続データベースを使用して、微麻烦一点 (少なくとも我个人这么觉得) を使用して、この「麻烦」体现在我们必要对目标データベースサーバーの操作システムを実行します。いくつかの配置、つまり、ODBC データソースを作成すると、ODBC 接続を実行できるようになります
MS Access データの ODBC 接続を構築する方法:
复制幣
1. 制御パネルで管理ツールを起動します
2. 双击その中のデータソース (ODBC) 画像标
3. 选择系DSN 选项卡
4. 点击系统 DSN 选项卡中の「追加」按钮
5. Microsoft Access ドライバーを選択します。ポイント完了
6. 次の界面、点击「选择」来定位データ库
7. このデータ库のためにデータソース名 (DSN) を 1 つ取得します
8. 点击确定
复制幣
コード:
复制幣
<ボディ> 
//接続一ODBCデータソース、無帐号、秘密
$conn = odbc_connect('northwind', '', '');
if (!$conn)
{
exit("接続に失敗しました: " . $conn);
}
$sql = "SELECT * FROM p8_ad_user";
$rs = odbc_exec($conn, $sql);
if (!$rs)
{
exit("SQL エラー");
}
echo "";
echo "
";
echo "
";
while (odbc_fetch_row($rs))
{
$username = odbc_result($rs, "ユーザー名");
$password = odbc_result($rs, "パスワード");
echo "
";
echo "
";
}
odbc_close($conn);
echo "
会社名 連絡先名
$username$password
";
?>
ボディ>
コードをコピー
0x4: DBX を使用してデータベースと通信します
PHP 自体には DBX 関数が組み込まれています。DBX モジュールはデータベース抽象化レイヤーです (DBX の「X」は、サポートできるデータベースの X タイプを表します)。 DBX 関数を使用すると、DBX でサポートされているすべてのデータベースにアクセスできます。
DBX は次のデータベースをサポートします:
1.Mysql
2.ODBC
3.PgSQL
4.Mssql(Microsoft SQL Server)
5.Fbsql
ダウンロード:
http://pecl.php.net/package/dbx
http://rpmfind.net/linux/rpm2html/search.php?query=php-dbx
コード:
コードをコピー
PHP-DBX URL オーガナイザー
p、ul、td、h1、h2、h3
{
フォントファミリー: verdana、helvetica、sans-serif;
}
/*****
* この例のテーブル定義:
* テーブル URL を作成します (
* url VARCHAR(128) が null ではありません、
* 説明テキスト、
* 主キー (URL));
*****/
//$MODULE を DBX_MYSQL、DBX_MSSQL、DBX_PGSQL、またはサポートされているデータベースとして定義します
$MODULE = DBX_PGSQL;
$server = "ローカルホスト";
$user = "ルート";
$パスワード = "111";
$database = "会社";
/* 関数 */
関数 get_urls($dbconn, $sql)
{
$result = @dbx_query($dbconn, $sql);
if ( $result == 0 )
{
echo dbx_error($dbconn);
}
その他
{
$result;
}
}
関数 url($action, $dbconn, $url, $description)
{
if($action == "追加")
{
$sql = "URLS 値に挿入('$url', '$description')";
}
elseif($action == "削除")
{
$url = urldecode($url);
$sql = "URL = '$url' の URL から削除";
}
$result = @dbx_query($dbconn, $sql);
if ( $result == 0 )
{
echo "

URL 追加エラー: " dbx_error($dbconn);

}
その他
{
print("

$action : $url が成功しました!

");

}
}
/*** 主要 ***/
$dbconn = dbx_connect($MODULE, $server, $database, $user, $password) または die("データベースに接続できません");
?>

PHP DBX URL オーガナイザー

URL を追加:


URL: 説明:
if(isset($addurl))
{
url("add", $dbconn, $url, $description);
}
if(isset($delete))
{
url("削除", $dbconn, $delete, "");
}
$sql = "URL から * を選択";
$result = get_urls($dbconn, $sql);
if(sizeof($result->data) == 0)
{
?>

申し訳ありませんが、データベースに URL がありません。いくつか追加する必要があります。

}
その他
{
?>

URL
説明
 
for($i = 0; $i data); $i++)
{
?>
}
?>テーブル>
}
?>
ボディ>
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

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

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

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

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

SublimeText3 英語版

SublimeText3 英語版

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

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

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

EditPlus 中国語クラック版

EditPlus 中国語クラック版

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