Smarty の実践的な教育例 (3. ADODB を使用したデータベースへの接続)
仕事の都合により、ここ 2 か月間非常に忙しかったため、このチュートリアルを時間内に完了することができませんでした。今日は土曜日に残業しなければならないので、完了するまで少し時間を取ってください! 最初に、新しいチュートリアルを作成するときに、最初に以前に書いたチュートリアルのいくつかの間違いを修正しました。いくつかの間違いを見つけてくれたnesta2001zhang兄弟に感謝します。
批判的な「誤解を招く人々」(本当に恥ずかしいことに、私の最初の草稿が公開された後、多くの問題を発見しました。その後、時には間違いも見つかりました。)改訂されたドキュメントです。これは実際に行うべきではありません。)
ここ数回のチュートリアル:
========================== ============ ====================
while($db->next_record() && $i > 0)
{
$array[] = array("ニュースID ", csubstr($db->f("iNewsID"), 0, 20),
"ニュースタイトル", csubstr($db->f("vcニュースタイトル" ), 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 を使用したことのある人は ADO コンポーネントを知っているかもしれません。 WINDOWS プラットフォームの ADODB は、Microsoft のデータベース操作コンポーネントではなく、PHP 言語で記述されたデータベース操作ライブラリのセットです。まず、標準 SQL ステートメントで記述されたデータベースにどのような利点があるかを見てみましょう。データベースを移植する際に実行コードを変更する必要がないため、ACCESS を含むさまざまなデータベースをサポートできます。これは、Microsoft ADODB と同様の構文機能を提供します。 ASP から PHP へ 嬉しいことに、その操作の多くは WINDOWS の ADODB に似ています。
3. Smarty ループに必要な 2 次元配列を生成できます。これについては後ほど説明します。データベース キャッシュ クエリをサポートし、データベースのクエリ速度を最大化します。
5. その他の実用的な機能
このクラスライブラリは非常に大きいので、実行効率を考えると真剣に考える必要があります。
機能は依然として非常に強力で、非常に実用的な機能が多数あります。これらの機能を使用すると、必要な機能を実現するのに非常に便利です。そのため、特別な要件がない上司は使用しないでください。 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(); を使用して初期化されます:
1 つ目の方法は、従来の方法です。とりあえずそう呼んでおくよ。新しい接続を確立するために使用するメソッドは、PHP の標準接続メソッドと非常によく似ています。
$conn = new ADONewConnection($dbDriver); );
簡単ですよね? phplib で db クラスを使用したことがある場合は、よく知っているはずです。
2 番目の方法: 初期化のためにデータベース接続ステートメントを 1 つのステートメントに記述する dsn メソッドを使用します。 dsn の記述方法は次のとおりです。 $dsn =
"DBType://User:Passwd@Host/DBName";データベースの種類を表します。User はユーザー名を表します。Passwd はパスワードです。Host はサーバー名です。DBName はデータベース名です
。このように、Oracle データベースを使用します。ユーザー名: oracleUser、パスワードは oraclePasswd、データベース サーバーは localhost 、データベースは oradb dsn 次のように記述します:
$dsn = "oracle://oracleUser:OraclePasswd@localhost/oradb";
$conn = new ADONewConnection($dsn);
この方法は、切り替えたプログラマにとってより興味深いかもしれません。 ASPから。
どちらの方法も使用できますが、それは個人の習慣によって決まります。
2. 関連概念: ADODB を使用するには 2 つの基本クラスがあり、1 つは ADOConnection クラス、もう 1 つは ASP で使用されている 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): 1 つのデータを返しますset の場合、ステートメントから、これが制限されたクエリ文であることがわかります。これは、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): フィールドの値を返します。 : 含まれるレコードの数。
3. GetMenu($name, [$default_str=''], [$blank1stItem=true], [$multiple_select=false] $size=0], [ $moreAttr='']) は、name=$name を指定してドロップダウン メニュー (または複数選択ボックス) を返すことができる非常に優れた関数です。文字列はコマンドです。$name は
オプションの name 属性を指します。$default_str はデフォルトで選択されている文字列です。$blank1stItem は最初の項目が空かどうかを示します。$multiple_select は複数選択ボックスであるかどうかを示します。これを取得します
文字列の後に、$smarty->("TemplateVar", "GetMenuStr") を使用して、テンプレートの "TemplateVar" にドロップダウン リスト (または複数のボックス) を入力できます
4. (): コードの一部を見てみましょう :
====================================== ============ =========
$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. 行を返します。コードを見てください。 ================= ================================ =======
$rs = &$conn->Exceute($sql);
if($rs)
while($row = $rs->FetchRow())
$ array[] = array("ニュースID" => $row["iNewsID "],
"ニュースタイトル" => csubstr($row["vcNewsTitle"]), 0, 20);
以上、下北栄光時代 ADODB と SMARTY を組み合わせた超強力な使い方を紹介しました。下北栄光時代の内容も含めて、PHP チュートリアルに興味のある友人の参考になれば幸いです。