もともとは pear を学びたかったのですが、インターネット上で adodb を非常に高く評価している投稿がいくつかあったため、これに変更しました。
ADODB には次の利点があります (オンラインでの話ですが、私のものではありません):
1. Pear よりも多くの種類のデータベースをサポートし、インストールも必要ありません。サーバーのサポートは必要ありません (初心者にとって、これは非常に重要です)
adodb が何なのかわからない、または adodb をダウンロードしたい友達は、このリンクにアクセスしてください: http://www.phpe.net/class/106 .shtml
さらに、README の全文を翻訳した兄弟、または翻訳の場所を知っている兄弟がいたら、私に返信してください。ありがとうございます。
チュートリアル
例 1: Select ステートメント
タスク: Northwind という名前の Access データベースに接続し、各レコードの最初の 2 つのフィールドを表示します
この例では、新しい ADOC 接続 (ADOConnection) オブジェクトを作成し、それを使用してこの接続は、永続的な接続である PConnect メソッドを使用します。データベースにクエリを実行する場合は、いつでもこの接続の Execute() 関数を呼び出すことができます。この関数は、実際にはカーソルである ADORecordSet オブジェクトを返します。配列フィールド[]内の現在の行を保持します。あるレコードから次のレコードに移動するには、MoveNext() を使用します。
注意: この例では使用されていない、表示されるレコードの数を制御できる非常に実用的な関数 SelectLimit があります。例: 最初の 10 レコードのみが表示され、ページング表示に使用できます)。 ----- -------------------------------------- --
include('adodb.inc.php'); #ADOdb をロード
$conn = &ADONewConnection('access'); # 新しい接続を作成します
$conn->PConnect('northwind'); # Northwind の MS-Access データベースという名前のファイルに接続します
$recordSet = &$conn->Execute('select * from products'); #product データ テーブルからすべてのデータを検索します
if (!$recordSet)
print $ conn->ErrorMsg (); //データ検索中にエラーが発生した場合、エラーメッセージを表示します
else
while (!$recordSet->EOF) {
print $recordSet->fields[0].' $recordSet->fields[1 ].'
';
$recordSet->MoveNext() //次のレコードを指す
} //リスト表示データ
$recordSet->Close() ; //オプション
$conn- >Close(); //オプション
---------------------------- ------ -------------------------------------------- -
$recordSet in $ 現在の配列は、recordSet->fields で返され、フィールドには数値インデックスが付けられます (0 から始まります)。データベース検索が次のレコードに移動すると、MoveNext() 関数が使用されます。 Execute() エラーが発生した場合、レコードセットは PHP データベース拡張機能から生成されます。一部のデータベース拡張では、フィールド名ではなく数値でのみインデックスを付けることができます。フィールド名インデックスを使用する場合は、インデックスの形式に関係なく、Execute() または SelectLimit によってレコードセットを作成する必要があります。 ()。
PHP:---------------------------------------------- ----------- ----------------------------------
$db-> ;SetFetchMode(ADODB_FETCH_NUM);
$rs1 = $db ->Execute('select * from table') //数値インデックスを使用
$db->SetFetchMode(ADODB_FETCH_ASSOC); Execute('select * from table'); // フィールド名インデックスを使用します
print_r($rs1->fields); # array([0]=>'v0',[1] =>'v1' を示します) )
print_r($rs2->fields); # array(['col1']=>'v0',['col2'] =>'v1') を表示します---------- ------------ -------------------------------------- ------------ --------
レコード番号を取得したい場合は、$recordSet->RecordCount()を使用できます。現在のレコードがない場合は -1 を返します。
例 2: フィールド オブジェクトを使用した高度な選択
テーブルを検索し、最初の 2 つのフィールドを表示します。2 番目のフィールドが時刻形式または日付形式の場合は、米国標準時刻形式に変更します。
PHP:------ -- ------------------------------------------------ -- ------------------------
include('adodb.inc.php'); ///adodb をロードします
$conn = &ADONewConnection ('access'); //新しい接続を作成します
$conn->PConnect('northwind') //northwind という名前の MS-Access データベースに接続します
$recordSet = &$conn->Execute('select) CustomerID,OrderDate from Orders'); //Orders テーブルから CustomerID フィールドと OrderDate フィールドを検索します
if (!$recordSet)
print $conn->ErrorMsg(); //データベース検索エラーが発生した場合、エラー メッセージが表示されます。が表示されます
else
while (!$recordSet->EOF) {
$fld = $recordSet->FetchField(1); //2 番目のフィールドを $fld に代入します
$type = $recordSet->MetaType( $ fld->type); //フィールド値の取得形式
if ( $type == 'D' || $type == 'T')
print $recordSet->fields[0].'
$recordSet->UserDate($recordSet->fields[1],'m/d/Y').'
' //フィールド形式が日付または時刻の場合は、アメリカ標準にしますformat 出力
else
print $recordSet->fields[0].' '.$recordSet->fields[1].'
' // それ以外の場合はそのまま出力
$recordSet->MoveNext () ; //次のレコードを指す
}
$recordSet->Close(); // オプション
?> -------------------------------------------------- - ------------
この例では、FetchField() 関数を使用して 2 番目のフィールドの形式をチェックします。この関数は、次のフィールドを返します。 3 変数のオブジェクト
name: フィールド名
type: データベース内のフィールドの実際の形式
max_length: フィールドの最大長。MYSQL など、一部のデータベースではこの値が返されません。この場合は max_length値は -1 です。
MetaType() を使用して、フィールドのデータベース形式を標準フィールド形式に変換します。
C: 文字フィールド。これは タグの下に表示されます。 X: 比較的大きなフィールドを格納するテキストフィールド
B: ブロック、画像などのバイナリ形式の大きなオブジェクト
D: 日付フィールド
T: 時刻フィールド
L: 論理フィールド (ブール論理またはビットフィールド)
I: 整数フィールド
N: 自動インクリメント、数値、浮動小数点、実数および整数を含む。
R: シリアル、自動インクリメント整数を含む。
メタタイプが日付またはタイムスタンプ型の場合、ユーザー定義の日付形式の UserDate() 関数を使用して出力し、UserDate() を使用して PHP SQL の日付文字列形式をユーザー定義の形式に変換します。MetaType() の別の使用法は次のとおりです。挿入および置換する前にデータの有効性を確認します。
例 3: 挿入
注文データ テーブルに日付と文字データを含むレコードを挿入します。これは、変換を挿入する前に行う必要があります (例: John's という単語内の単一引用符)。 ---------------------------------- ---------------- -----------------------------
include('adodb.inc.php'); // adodb
$conn = &ADONewConnection('access'); // 新しい接続を作成します
$conn->PConnect('northwind'); // ACCESS データベースに接続します
$shipto = $conn->qstr(" John's Old Shoppe");
$sql = "注文に挿入 (customerID,EmployeeID,OrderDate,ShipName) ";
$sql .= "values ('ANATR ',2,".$conn->DBDate( time()).",$shipto)";
if ($conn->Execute($sql) === false) {
print '挿入エラー: '.$conn->ErrorMsg().'< ;BR>';//挿入が失敗した場合は、エラーメッセージを出力します
?> ---------------------------------------------------- ------------
この例では、ADOdb がいくつかの高度なデータベース操作を簡単に処理でき、UNIX タイムスタンプ (長整数) が DBDate() によって正しい Access 形式に変換されることがわかります。正しいエスケープ文字は、John's Old Shoppe を引用するために使用されます。これは、qstr() による PHP のデフォルトの John's Old Shoppe ではありません。
Execute() でエラーが発生した場合、実行ステートメントのエラー処理を確認してください。 ErrorMsg() 関数は最後のエラー メッセージを返します。 注: エラー メッセージを保存するには、php_track_errors を有効にする必要がある場合があります。
// Load adodb
$conn = &ADONewConnection('access'); // 新しい接続を作成します
$conn->PConnect('northwind'); // ACCESS データベースに接続します Northwind
$shipto = $conn->qstr( "John's Old Shoppe");
$sql = "注文に挿入 (customerID, EmployeeID,OrderDate,ShipName) ";
$sql .= "values ('ANATR',2,".$conn->FormatDate (time()).",$shipto)";
$conn->debug = true;
if ($conn->Execute($sql) === false) print '挿入エラー'; ;
上記の例では、debug = true に設定しています。これは、すべての SQL 情報を表示する前に実行され、すべてのエラー メッセージも表示されます。レコードセットについては、rs2html() の例を参照してください。
「カスタム エラー ハンドラー」セクションの内容も参照してください。
例 5: MySQL とメニュー
MySQL データベース アゴラに接続し、SQL ステートメントから
";print rs2csv($rs); # 文字列を返す、CSV formatprint '<hr>'; $rs->MoveFirst(); # 一部のデータベースは MoveFirstprint rs2tab($rs,false) をサポートしていないことに注意してください。 # タブ区切りの文字列を返します <br># false == 最初の行印刷のフィールド名を抑制 '<hr>';$rs->MoveFirst();rs2tabout($rs); # stdout に直接送信します (rs2csvout 関数もあります) <br>print "";
以上、dob Adodb の 10 個のサンプルのクリーン バージョンで、dob に関する内容が含まれており、PHP 教則に関心のある友人の助けになることを望みます。