Smarty 実践指導例 (3. ADODB を使用したデータベースへの接続)
仕事の都合でここ 2 か月間非常に忙しかったため、このチュートリアルを時間内に完了することができませんでした。今日は土曜日に残業しなければならないので、少し時間をかけて完了してください! 新しいチュートリアルを開始するとき、私はまず以前に書いたチュートリアルのいくつかの間違いを修正しました。そうしないと、「誤解を招く」と他の人から叱られました(本当に恥ずかしいのですが、最初の草案が公開された後、多くの問題が見つかりました。その後、いくつかの間違いもありました)。改訂されたドキュメントでは、それは本当に不当でした
これは...)
ここ数回のチュートリアルでは:
================= ========= ========================
while($db->next_record() && $i > 0 )
{
$array[] = array("ニュースID", csubstr($db->f("iNewsID"), 0, 20),
"ニュースタイトル", csubstr($db->f("vcNewsTitle "), 0, 20));
$i--;
}
============================== =========== =================
を次のように変更する必要があります:
=============== ============= ==============================
while($db-> ;next_record() && $i > 0)
{
$array[] = array("ニュースID" => $db->f("iNewsID"),
"ニュースタイトル" => csubstr($db ->f("vcNewsTitle"), 0, 20 ));
$i--}
===================== ================ ====================
なぜこのように変更するのでしょうか? 2 番目の方法の方がわかりやすいからです。実際、最初の方法の効果は 2 番目の方法の効果と同じです。方法に違いはありません。以前にこれらのプログラムをデバッグしたことがありますが、問題はありませんでした。 さて、今日は ADODB について話しましょう。 ADODB は、ASP を行ったことがある人なら WINDOWS プラットフォームのコンポーネントでよく知られていますが、ここで使用する ADODB は Microsoft のデータベース操作コンポーネントではなく、PHP 言語で書かれたデータベース操作クラス ライブラリのセットです。
1. 標準 SQL ステートメントで記述されたデータベース実行コードは、データベースの移植時にソース プログラムを変更する必要がないため、ACCESS を含むさまざまなデータベースをサポートできます。これは、Microsoft ADODB に似た関数です。これは、PHP に切り替える人にとっては非常に便利です。
3 の操作は、Smarty ループに必要な 2 次元配列を生成できます。
4. データベースのクエリ速度を最大化するために、これについては後で説明します。
5. その他の実用的な機能
このクラスライブラリは非常に巨大なので、実行効率を考えると真剣に考える必要があります。
機能は依然として非常に強力で、非常に実用的な機能がたくさんあります。これらの機能を使用すると、必要な機能を実現するのに非常に便利です。そのため、特別な要件がない上司は使用しないでください。
1. ADODB の入手方法は何ですか?
http://sourceforge.net/project/show... hp4.0.5 以降から。
2. ADODB をインストールする方法
ダウンロードした圧縮ファイルを解凍します。Windows では、解凍後に winrar を使用できます。完了したら、例で /comm/adodb/ にコピーしたように、指定したディレクトリの adodb ディレクトリにディレクトリをコピーします。
3. ADODB を呼び出すには?
include_once ("./comm/adodb/adodb.inc.php"); を使用します。 ADODB のメイン ファイルが含まれます。
4. ADODB の使用方法
1. 初期化: ADODB はステートメント $conn = ADONewConnection(); を使用して初期化されます:
1 つ目の方法は、従来の方法です。とりあえずそう呼んでおくよ。新しい接続を確立するために使用するメソッドは、PHP の標準接続メソッドと非常によく似ています。
$conn = new ADONewConnection($dbDriver); );
簡単ですよね? phplib で db クラスを使用したことがある場合は、よく知っているはずです。
2 番目の方法: 初期化のためにデータベース接続ステートメントを 1 つのステートメントに記述する dsn メソッドを使用します。 dsn の記述方法は次のとおりです。 $dsn =
"DBType://User:Passwd@Host/DBName";このうち、DBTypeはデータベースの種類を表し、Userはユーザー名を表し、Passwdはパスワード、Hostはサーバー名、DBNameはデータベース名
、私はこのようにOracleデータベースを使用します、ユーザー名:oracleUser、パスワードはoraclePasswd 、データベースサーバーはlocalhost、データベースは次のように記述されます:
$dsn = "oracle://oracleUser:OraclePasswd@localhost/oradb";
$conn = new ADONewConnection($dsn); ASPから乗り換えた人はこの方法に興味があるかもしれません。
どちらの方法も使用できますが、それは個人の習慣によって決まります
2. 関連概念: ADODB を使用するには 2 つの基本クラスがあり、1 つは ADOConnection クラス、もう 1 つは ADORecordSet クラスです。これら 2 つのクラスの意味については、
ADOConnection はデータベース接続クラスを指し、ADORecordSet はクエリ ステートメントを実行する ADOConnection によって返されるデータ セット クラスを指します。関連情報については、ADODB
Class マニュアルを参照してください。
3. 基本機能:
ADOConnection クラスの関連メソッドは次のとおりです:
1.Connect: 上で紹介したデータベース接続メソッド。 mysql の場合は、PHP 言語での使用法と同じ PConnect もあります。
2.Execute($sql): クエリ ステートメントを実行し、ADORecordSet クラスを返します。
3.GetOne($sql): 最初の行の最初のフィールドを返します。
4.GetAll($sql): すべてのデータを返します。この機能はとても便利です。前回のチュートリアルでニュース リストの入力について書いたとき、ページに表示する必要がある
ニュース リストを 2 次元配列にする必要があったことを覚えていますか?これが文です:
============================================ == =========================================
while($db-> ;next_record ())
{
$array[] = array("ニュースID" => $db->f("iNewsID"),
"ニュースタイトル" => csubstr($db->f(" vcNewsTitle" ), 0, 20));
}
==================================== ===== ============================================ =
この行は、どういう意味ですか?表示するニュース例テーブルを生成します
$array[0] = array("NewsID"=>1, "NewsTitle"=>"The first news item here"); array( "NewsID"=>2, "NewsTitle"=>"ニュースの 2 番目の記事はこちら");
...
この形式ですが、タイトルを制御する必要がない場合は幸いです。 ADODB では、次のように記述できます:
======================================== ====== =======================================
$strQuery = " select iNews, vcNewsTitle from tb_news_ch ";
$array = &$conn->GetAll($strQuery);//このステートメントに注意してください
$smarty->assign("News_CH", $array);
unset( $array);
== ========================================= ======= ==============================
もちろん、ここの $conn は初期化されているはずです。わかるかな?手動で作成したい2次元データはここでGetAllを使えばいいことが分かりました! ! !これも、ADODB+Smarty が無敵の組み合わせであると言われる理由の 1 つです...
4.SelectLimit($sql, $numrows=-1, $offset=-1, $inputarrr=false): Return A単純な例を見てみましょう:
$rs = $conn->SelectLimit(. "select iNewsID, vcNewsTitle from tb_news_CH", 5, 1); 理解しましたか? $rs にはデータベースの先頭から 5 レコードが保存されます。 Oracle データベースが SQL ステートメントでの制限の使用をサポートしていないことはわかっていますが、ADODB を使用すると、この問題ははるかに簡単に解決できます。
5.Close(): データベースを閉じます。PHP はページが終了すると自動的に閉じますが、プログラムの整合性を保つために、ページの最後でデータベースを閉じる必要があります。
$conn->Execute($sql) に対して ADORecordSet.ADORecordSet によって返される結果について、その基本関数は次のとおりです。
1. Fields($colname): フィールドの値を返します。
2. ): レコードの数が含まれます。このレコードは、データ セット内のレコードの総数を決定します。
3. , [$size=0], [$moreAttr='']) は、name=$name でドロップダウン メニュー (または複数選択ボックス) を返すことができる非常に優れた関数です。 HTML 文字列 (これは興味深いものです)、$name は
オプションの name 属性を指します、$default_str はデフォルトで選択された文字列です、$blank1stItem は最初の項目が空かどうかを示します、$multiple_select はそれが複数選択であるかどうかを示しますこの
文字列を取得した後、$smarty->("TemplateVar", "GetMenuStr") を使用して、テンプレートの "TemplateVar" にドロップダウン リスト (または複数のボックス) を入力できます
4 MoveNext(): コードを見てみましょう:
================================== ======== =============
$rs = &$conn->Exceute($sql);
if($rs)
{
while($rs) ->EOF)
{
$array[] = array("ニュースID" => $rs->fields["iNewsID"],
"ニュースタイトル" => csubstr($rs->fields[" vcNewsTitle"]), 0, 20 );
$rs->MoveNext();
}
}
======================== ========== ========================
MS ADODB のものと非常に似ています。
5. MoveFirst()、MoveLast( )、Move($to): 同じです。関数名を見れば、その意味が分かります。
6. FetchRow(): 行を返します。コードを見てください。 =========== ====================================== ======
$rs = & $conn->Exceute($sql);
if($rs)
{
while($row = $rs->FetchRow())
{
$array [] = array("ニュースID" => $row["iNewsID"],
"ニュースタイトル" => csubstr($row["vcNewsTitle"]), 0, 20);
http://www.bkjia.com/PHPjc/317251.html
www.bkjia.com
true