Smarty 実践指導例 (3. ADODB を使用したデータベースへの接続)
ここ 2 か月間、仕事の都合で非常に忙しく、このチュートリアルを完了するのが間に合わなかったのです。今日は土曜日に残業する必要がなかったので、時間をかけて完了しました! 新しいチュートリアルを開始するときに、まず以前に書いたチュートリアルのいくつかの間違いを修正してください。この記事を見つけてくれたnesta2001zhang兄弟に感謝します。それにはいくつかの間違いがあります。さもなければ、他の人
が「人々を誤解させる」として私を本当に叱るでしょう(私の最初の草稿が公開された後、これを言うのは本当に恥ずかしいです)多くの問題を見つけたので、しばらくして修正しました) ファイルにもエラーがありますが、これは実行すべきではありません
これ...)
前のチュートリアル:
= ============= ==================================== =======
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 プラットフォームの ADO コンポーネントを知っているかもしれませんが、ここで説明する ADODB は Microsoft のデータベース操作コンポーネントではなく、作成されたデータベース操作クラス ライブラリのセットです。まず、PHP 言語の利点を見てみましょう。
1. 標準 SQL ステートメントで記述されたデータベース実行コードは、データベースを移植するときにソース プログラムを変更する必要がありません。 ACCESS を含むさまざまなデータベース。
2. ASP から PHP に移行するユーザーにとって、これは大きな利点です。
3はい、Smarty ループに必要な 2 次元配列を生成します。これについては後で説明します。
4. データベースのクエリ速度を最大化します。
5. その他の実用的な機能
このクラスライブラリは非常に大きいので、実行効率を考えると真剣に考える必要があります。正直に言うと、その
関数は依然として非常に強力であり、多くの非常に実用的な機能を備えています。これらの関数を使用すると、必要な機能を非常に簡単に実現できるため、これらのボスには特別な要件はありません。そうでない場合
1. ADODB の入手方法、動作環境は何ですか?
http://sourceforge.net/project/show... hp4.0.5 以降。
2. ADODB をインストールするには?
ダウンロードした圧縮ファイルを解凍します。 注: ダウンロードした形式は ADODB.tar.gz で、Windows では winrar を使用して圧縮できます。 .
解凍を実行します。 解凍が完了したら、例で /comm/adodb/ にコピーしたように、ディレクトリを adodb ディレクトリにコピーします。
3. ADODB を呼び出す方法は?
include_once ("./comm/adodb/adodb.inc.php"); を使用します。 ADODB のメイン ファイルが含まれます。
4. ADODB の使用方法
1. 初期化: ADODB は $conn = ADONewConnection(); を使用して初期化します。
最初の方法は次のとおりです。伝統的な手法。とりあえずそう呼んでおくよ。新しい接続を確立するために使用されるメソッドは、PHP の標準接続メソッドと非常によく似ています。
$conn = new ADONewConnection($dbDriver);
$conn->Connect($host, $user, $) passwd, $db);
簡単ですよね? phplib で db クラスを使用したことがある場合は、よく知っているはずです。
2 番目の方法: dsn メソッドを使用します。これは、初期化のためにデータベース接続ステートメントを 1 つのステートメントに書き込みます。dsn の記述方法は次のとおりです。 $dsn =
"DBType:// User :Passwd@Host/DBName"; ここで、DBType はデータベースの種類を表し、User はユーザー名を表し、Passwd はパスワード、Host はサーバー名、DBName はデータベース名
を使用します。 oracle データベース、ユーザー名: oracleUser 、パスワードは oraclePasswd 、データベース サーバーは localhost 、データベースの DSN は oradb は次のように記述されます:
$dsn = "oracle://oracleUser:OraclePasswd@localhost/oradb ";
$conn = new ADONewConnection($dsn) ;
このメソッドは、ASP から切り替えたプログラマにとってより興味深いかもしれません。
どちらの方法も使用できますが、個人の習慣によって異なります。
2. 関連概念:
ADODB を使用するための 2 つの基本クラスがあります。1 つは ADOConnection クラスで、もう 1 つは ADOConnection クラスです。 ADORecordSet クラス。ASP を使用したことがある人は、これら 2 つのクラスを見ればその意味が理解できるでしょう。
ADOConnection はデータベース接続クラスを指し、ADORecordSet は返されたデータ セット クラスに対して実行されるクエリ ステートメントを指します。関連情報については、ADODB
クラスのマニュアルを確認してください。
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"); [1 ] = 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): Returnsこのステートメントから、これが制限されたクエリ
文であることがわかります。これは、mysql ステートメントの制限と同じ効果があります。
$ を次に示します。 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. RecordCount(): このレコードは、データ セット内のレコードの総数を決定します。 =true]、[$multiple_select= false]、[$size=0]、[$moreAttr='']) は非常に優れた
関数で、ドロップダウン メニュー (または複数のselect box) with 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 の 1 つです。
5. MoveFirst( )、MoveLast()、Move($to): 同じです。関数名を見れば、その意味がわかります。
6.行のコードを見てください:
==== ==================================== ============== ===
$rs = &$conn->Exceute($sql)
if($rs)
{
while($row = $rs->FetchRow())
{
$array[] = array("NewsID" => $row["iNewsID"],
"NewsTitle" => ; csubstr($row["vcNewsTitle"]), 0, 20);