mysql
1. While ループ
このレッスンでは、さらに深く掘り下げて、PHP と MySQL を使用して、いくつかのシンプルで便利なページを作成します。昨日作成したデータベースから始めて、データベース内のデータを表示しますが、少し磨きをかけます。
まず、次のコードを使用してデータベースの内容をクエリします。
$db = mysql_connect("localhost", "root ");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM 従業員",$db);
echo "< ;table border=1>n";
echo "
名前 | 位置 |
n";
while ($myrow = mysql_fetch_row($result)) {
printf("
%s %s | %s td> |
n", $myro
w[1], $myrow[2], $myrow[3]);
}
echo "< ;/table>n";
?>
さて、このプログラムにいくつかの新しいものを追加しました。最も明白なのは while() ループです。このループは、データベースに読み取り可能なレコードがまだある限り (mysql_fetch_row() 関数を使用)、そのレコードを変数 $myrow に割り当て、中括弧 ({}) 内の命令を実行することを意味します。ここをよく見てください。この部分はより重要です。
mysql_fetch_row() 関数に注目する必要があります。ここには少し問題があります。配列を返すのですが、その中のフィールドには配列の添字でアクセスする必要があります。最初のフィールドには 0、2 番目のフィールドには 1 というインデックスが付けられます。これは、特定の複雑なクエリを実行するときに実行するには非常に面倒です。
それでは、ループ処理を詳しく見てみましょう。プログラムの最初の数行は、レッスン 1 の例ですでに見ました。次に、while() ループで、クエリ結果からレコードを読み取り、そのレコードを配列 $myrow に割り当てます。次に、printf関数を使ってデータの内容を画面に表示します。その後、ループが繰り返し実行され、次のレコードが読み取られて $myrow に割り当てられます。これは、すべてのレコードが読み取られるまで続きます。
while() ループを使用する利点の 1 つは、データベース クエリがレコードを返さなかった場合にエラー メッセージを受け取らないことです。ループ ステートメントが実行されたばかりの場合、ループ条件は満たされず、データは $myrow に割り当てられず、プログラムは直接実行されます。
しかし、クエリがデータを返さなかった場合、ユーザーにそれをどのように知らせるのでしょうか?おそらく、ユーザーに関連する情報を提供する必要があるでしょう。それは可能です。その方法を見てみましょう。 >>
2. if-else
以下のプログラムをご覧ください。
$db = mysql_connect("localhost") , "ルート");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM 従業員",$db); if ($myrow = mysql_fetch_array($result)) {
echo "
n";
echo "name td> ; | アドレス |
n";
do {
printf("%s %s< /td> ; | %s |
n", $myrow["first"],
$myrow["last"], $myrow["address"]);
} while ($myrow = mysql_fetch_array($result));
echo "
n";
} else {
echo "申し訳ありませんが、レコードが見つかりません。 ";
}
?>
このプログラムには多くの新しいコンテンツが含まれていますが、これらのコンテンツは非常にシンプルです。 1 つ目は mysql_fetch_array() 関数です。この関数は mysql_fetch_row() に非常に似ていますが、唯一の違いがあります。この関数を使用すると、$myrow["first"] などの配列添字の代わりにフィールド名を使用して、返されるフィールドにアクセスできます。このようにして、多くの労力を節約できます。さらに、do/while ループと if-else 条件文がプログラムに追加されます。
if-else 条件文の意味は、$myrow 変数へのレコードの割り当てが成功した場合は続行し、そうでない場合は else 部分にジャンプしてそこで命令を実行することです。
do/while ループは、前のページで使用した while() ループのバリエーションです。 do/while を使用する必要がある理由は、元の if ステートメントで、クエリによって返された最初のレコードを変数 $myrow に割り当てているためです。この時点で一般的な while ループ (たとえば while ($myrow = mysql_fetch_row($result))) を実行すると、2 番目のレコードが $myrow に割り当てられ、最初のレコードはフラッシュされます。 while ループを使用すると、ループ本体を 1 回実行してからループ条件を決定できるため、
最後に、クエリ結果にレコードがない場合、プログラムが実行されます。 else{} 部分に含まれるステートメント プログラムのこの部分の実行を確認したい場合は、SQL ステートメントを SELECT * FROMemployees WHERE id=6 に変更するか、他の形式に変更してクエリを作成します。
ループの if-else コードを拡張して、ページのコンテンツを充実させましょう。
3. 最初のプログラム スクリプト
>
ループ ステートメントを学習しました。次に、それをより実践的な例で使用する方法を説明します。その前に、Web テーブルと GET メソッドの処理方法を理解する必要があります。この部分については、少し前の記事で紹介したばかりなので、その記事を読んでください。
次に、クエリ パラメータ文字列を処理します。ご存知のとおり、クエリ パラメータ文字列にパラメータの内容を書き込む方法は 3 つあります。1 つ目は、フォームで GET メソッドを使用する方法です。2 つ目は、ブラウザのアドレス バーにクエリ パラメータを直接入力する方法です。 URL。3 番目の方法は、Web ページのハイパーリンクにクエリ パラメータ文字列を埋め込み、ハイパーリンクの内容が次のようになります:
ここでは最後の方法を使用します。
最初に、データベースに再度クエリを実行し、従業員名をリストします。「検索」を参照してください。以下のプログラムでは、そのほとんどはすでにおなじみです。
$db = mysql_connect("localhost" , "root");
mysql_select_db("mydb",$db);
$result = mysql_query(" SELECT * FROM 従業員",$db); if ($myrow = mysql_fetch_array($result)) {
do {
printf("%s %s< /a>
} while ( $myrow = mysql_fetch_array($result));
} else {
echo "申し訳ありません、レコードが見つかりません!" ";
}
?>