PHP データベース ドライバー、データを接続するさまざまな方法 研究ノート_PHP チュートリアル
ウェブ開発
エンタープライズセキュリティ
情報技術
セキュリティソフト
データベース
モバイル開発
システムセキュリティ
ウェブサイトのセキュリティ
サイバーセキュリティ
ネットワーク技術
ソフトウェア開発
目次
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 がデータベースに接続するさまざまな方法と、さまざまなビジネス シナリオにおけるメリットとデメリットを 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";
n";
foreach ($line を $col_value として)
{
echo "tt$col_value n";
}
echo "t
}
echo "n";
// 释放结果集
mysql_free_result($result);
// 关闭连接
mysql_close($link);
?>
复制幣
拡張子=php_mysqli.dll
mysqli 拡張は、MySQL 拡張拡張と呼ばれており、MySQL4.1.3 または更新バージョンの新しい高レベルの機能を使用するために使用できます。mysqli 拡張は、PHP 5 以降のバージョンに含まれています。
mysqli扩展には一連の特典があり、mysql扩展の優先順位は次のとおりです: オブジェクトへのインターフェイスが提供されると同時に、プロセスへのインターフェイスも提供されます。
复制幣終了
}
/* クエリをサーバーに送信します クエリリクエストをサーバーに送信します*/
if ($result = mysqli_query($link, 'SELECT * from p8_ad_user'))
{
print("非常に大きな都市は次のとおりです: ");
printf("%s (%s) ", $row['Name'], $row['Population']);
}
/* 結果セットを破棄し、結果セットに使用されていたメモリを解放する クエリを終了してメモリを解放する */
mysqli_free_result($result);
}
/* 接続を閉じます 接続を閉じます*/
mysqli_close($link);
?> を参照してください。
拡張子=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->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
キャッチ (PDOExceptsddttrtion $e)
{
// PDOException を返す
印刷�エラー!:�。
http://www.php.net/manual/zh/book.pdo.php
0x3: ODBC 抽象層とデータテーブル通信を使用します
ODBC は、特定のデータソース (MS Access データ库など) に接続できるアプリケーションプログラムインターフェイス (API) です
グラフは、機能や構成などの接続方法を、プロシージャ言語およびデータベース認証 (SQL 標準化) によって標準化します。
1. まず、ODBC システムに適しているのは、プログラム言語システムです
2. 次に、データ ストレージ システムには ODBC システムが適しています。
したがって、ODBC には、「ODBC に対してはプログラム言語」の駆動プログラム (PHP-ODBC など) と、「データ記憶システムに対しては ODBC」の制御プログラム (MySQL-ODBC など) が必要です。 ODBC システム自体に加えて、ODBC はデータ ソースとプログラム ステートメントの間に存在するセキュリティを考慮してデータ ソースの構成を処理することもできます。
PHP-DBX URL オーガナイザー
URL: 説明:
URL
data[$i]['url']?>>=$result->data[$ i]['url']?>
=$result->data[$i]['description']?>
data[$i]['url'])?>>delete
試してみる
{
$dbhdl = 新しい PDO($dsn, $dbusr, $dbpwd, $opt);
//例外を表示します死ね();
}
$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 のデータベース接続方式になる予定です。
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 "
";
会社名 | ";連絡先名 |
---|---|
$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
コード:
コードをコピー
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 オーガナイザー
<フォーム action=dbx_urls.php メソッド=post>
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 がありません。いくつか追加する必要があります。
}
その他
{
?>
説明
for($i = 0; $i data); $i++)
{
?>
}
?>テーブル>
}
?>
ボディ>