ホームページ >php教程 >php手册 >PHP/MySQL 3 日間パス - 2 日目

PHP/MySQL 3 日間パス - 2 日目

WBOY
WBOYオリジナル
2016-06-21 08:58:33763ブラウズ

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 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 "n";

do {

printf("n", $myrow["first"],
$myrow["last"], $myrow["address"]);

} while ($myrow = mysql_fetch_array($result));

echo "
nameアドレス
%s %s< /td> ;%s
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 "申し訳ありません、レコードが見つかりません!" ";

}

?>






ここ特別なことは何もありませんが、printf 関数は少し異なります。

最初に注意すべきことは、このバックスラッシュが PHP に文字を直接表示することです。 、および次の文字はプログラム コードとして扱うことができません。また、変数 $PATH_INFO の使用法に注意してください。この変数はすべてのプログラムでアクセス可能であり、プログラム自体の名前とディレクトリの場所を保存するために使用されます。 $PATH_INFO を使用すると、プログラムが他のディレクトリや他のマシンに移動された場合でも、
が正しく呼び出されることが保証されます。
先ほど述べたように、プログラムに含まれるハイパーリンクはプログラム自体を再度呼び出しますが、クエリパラメータ文字列に「名前=値」などのペア形式が含まれている場合は、いくつかのクエリパラメータが追加されます。 、変数が自動的に生成され、変数名と値はクエリ パラメーター文字列で指定された名前と同じになります。この関数を使用すると、プログラムが初めて実行されるか 2 回目に実行されるかを判断できます。私たちがしなければならないのは、変数

が存在するかどうかを PHP に問い合わせることだけです。この質問に対する答えがわかったので、プログラムを 2 回目に呼び出したときにいくつかの異なる結果を表示できます。 🎜>




$db = mysql_connect("localhost", "root"); 🎜>mysql_select_db("mydb",$db);

/ / 個々のレコードを表示
// 単一レコードの内容を表示

if ($id) {

$result = mysql_query("SELECT * FROM 従業員 WHERE id=$id",$db );

$myrow = mysql_fetch_array($result);

printf("名前: %sn
", $myrow["first"]);

printf("姓: %sn
", $myrow["last"]);

printf("アドレス: %sn
", $myrow["アドレス"]);

printf("位置: %sn
", $myrow["位置"]); >
} else {

// 従業員リストを表示
// 従業員リストを表示

$result = mysql_query("SELECT * FROM従業員",$db)

if ($myrow = mysql_fetch_array($result) )) {

// 表示するレコードがある場合はリストを表示
// レコードがある場合はリストを表示

do {

printf("< ; a href="%s?id=%s">%s %s

n", $PATH_INFO,
$myrow["id"], $myrow["first" ] , $myrow["last"]);

} while ($myrow = mysql_fetch_array($result));

} else {

// するレコードがありませんdisplay
//表示するレコードがありません

echo "申し訳ありませんが、レコードが見つかりません!"

}

?>; 🎜 >





プログラムが複雑になり始めているので、何が起こっているかを説明するためにここにコメントを追加しました。何。 // を使用して単一行のコメントを追加することも、/* と */ を使用して大きなコメントを囲むこともできます。

この時点で、本当に役立つ最初の PHP/MySQL スクリプトを学習しました。次に、Web フォームを追加してデータベースにデータを送信する方法を見ていきます。 >>



4. サーバーにデータを送信します

これで、データベースからデータを読み取るのはそれほど難しくなくなりました。しかし、データをデータベースに順番に送信するにはどうすればよいでしょうか?実際、これは PHP の問題ではありません。

まず、簡単なテーブルを含む Web ページを作成します。








姓:


アドレス:

位置:




>




$PATH_INFO の使い方にも注意してください。最初のレッスンで述べたように、HTML コード内のどこでも PHP を使用できます。また、テーブル内の各要素がデータベース内のフィールドに対応していることにも気づくでしょう。この対応は必須ではありません。これは、より直観的であり、後でコードを理解しやすくするためです。

また、「送信」ボタンに name 属性を追加したことにも注意してください。このようにして、$submit 変数がプログラムに存在するかどうかをテストできます。その後、ページが再度呼び出されたときに、ページが呼び出されたときにフォームが入力されたかどうかがわかります。

上記の Web ページのコンテンツを PHP プログラムに書き込んでから、プログラム自体を呼び出す必要はないことに注意してください。フォームを表示する Web ページとフォームを処理するプログラムを、都合に応じて 2 つの Web ページ、3 つの Web ページ、またはさらに多くの Web ページに分割できます。ファイルに入れると内容がコンパクトになるだけです。

OK、コードを追加して、ユーザーがフォームに入力した内容を確認しましょう。 PHP が実際にすべての変数をプログラムに渡していることを証明するために、$HTTP_POST_VARS を使用してすべてのクエリ パラメーター変数を表示します。この方法は非常に便利なデバッグ ツールです。すべての変数を表示したい場合は、$GLOBALS を使用します。






if ($submit) {


// フォーム入力を処理します

while (list($name, $value) = each($HTTP_POST_VARS)) {

echo "$name = $value< br>n";

}

} else{


// テーブル

?>

< を表示します;form method="post" action="">

名前:


姓:


住所:

位置:






} // end if, end of if

? >





フォームに入力された内容を取得できるようになりました。そしてそれらをデータベースに送信します。






if ($submit) {


// フォーム入力を処理します

$db = mysql_connect("localhost", "root")

mysql_select_db("mydb",$db); >
$sql = "INSERT INTO 従業員 (first,last,address,position)
VALUES ('$first','$last','$address','$position')";
$result = mysql_query($sql);

echo "ありがとうございます! 情報が入力されました。n"

} else{


// 表示テーブルの内容



名前: < ;input type="Text" name="first">


姓:
🎜 >住所:


位置:





} // 終了 if


?>



これでデータベースにデータが挿入されました。ただし、改善すべき課題はまだたくさんあります。ユーザーが特定のフィールドに入力しなかった場合はどうなりますか?数字が必要なテキストを入力する場合はどうすればよいですか?または、間違って記入した場合はどうすればよいですか?

心配しないでください。段階的に見ていきましょう。 > データベースクエリの実行には mysql_query() のみを使用してください。これはデバッグ時に便利です。プログラムに問題が発生した場合は、いつでも SQL ステートメントの内容を表示して、文法上のエラーがないかチェックできます。

データベースにデータを挿入する方法を学習しました。次に、データベース内の既存のレコードを変更する方法を学びましょう。データ編集には、データ表示とフォーム入力によるデータベースへのデータ返という 2 つの部分が含まれます。これらの 2 つの部分についてはすでに説明しました。ただし、データの編集は少し異なります。まず、関連するデータをテーブルに表示する必要があります。

まず、最初のレッスンに戻って、Web ページに従業員の名前を表示するためのプログラム コードを見てみましょう。ただし、今回はデータをテーブルに表示します。プログラムは次のようになります。





>mysql_select_db("mydb",$db);

if ($id) {


// データベースにクエリ

$sql = "SELECT * FROM従業員 WHERE id=$id";

$result = mysql_query($sql);

$myrow = mysql_fetch_array ($result);

?>



">

Name: ">


姓:">


アドレス:">


Position:






} else {


// 従業員リストを表示

$result = mysql_query("SELECT * FROM 従業員" ,$db);

while ($myrow = mysql_fetch_array($result)) {

printf("< a href="%s?id=%s">%s %s
n", $PATH_INFO,
$myrow["id"], $myrow["first"] , $myrow["last"]);



}





対応するテーブル要素の value 属性にフィールドの内容を書き込んだだけで、比較的単純です。さらに一歩進んで、プログラムがユーザーが変更したコンテンツをデータベースに書き戻せるようにします。同様に、「送信」ボタンを使用して、フォーム入力コンテンツを処理するかどうかを決定します。また、使用する SQL ステートメントが若干異なることにも注意してください。





$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

if ($id) {

if ($submit) {

$sql = " UPDATE 従業員 SET first='$first',last='$last',
address='$address',position='$position' WHERE id=$id";

$result = mysql_query ($sql);


echo "ありがとうございます! データ変更が完了しました"

} else {


// データベースのクエリ

$sql = "SELECT * FROM 従業員 WHERE id=$id";

$result = mysql_query($sql)

$myrow = mysql_fetch_array($result);
?>



">


名:">< br>


姓:">< br>


住址:">< br>


职位:">< br>







}

} else {


// 显示员工列表

$result = mysql_query ("SELECT * FROM 従業員",$db);

while ($myrow = mysql_fetch_array($result)) {

printf("%s %sn", $PATH_INFO,
$myrow["id"], $myrow["first"], $myrow["last"]);

}

}

?>






このようなものです。このプログラムには、私たちの研究の大部分の特性が含まれています。

以下に、すべての西すべてをまとめて、素晴らしい手順を記述します。>>

六つの完全なプログラム

この結論を終える前に、追加、修正、削除の機能を持たせるために、すべてのプログラムを 1 つのプログラムに追加する必要があります。すべてのコンテンツの拡張も、優れた方法として使用できます。以下の手順を参照してください。




$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

if ($submit) {


// 如果没有ID,则我们是在增加记录,否则我们是在修改记录

if ($id ) {

$sql = "従​​業員の設定を更新します first='$first',last='$last',
address='$address',position='$position' WHERE id=$id ";

} else {

$sql = "INSERT INTO 従業員 (first,last,address,position)
VALUES ('$first','$last','$address' ,'$位置')";

}


// 方向データベース库発行SQL コマンド

$result = mysql_query($sql);


echo "记录修正成功!

";

} elseif ($delete) {


// 删除一条记录

$sql = "DELETE FROM 従業員 WHERE id=$id";

$結果 = mysql_query($sql);


echo "记录删除成功!

";

} else {


// 如果我们还没有按送信按钮,那么执行下面这部分程序

if (!$id) {


// 結果が修正状態でない場合、则表示员工列表

$result = mysql_query("SELECT * FROM従業員",$db);

while ($myrow = mysql_fetch_array($result)) {

printf("
%s %s$PATH_INFO, $myrow["id"], $myrow["first"], $myrow["last"]);

printf("
(DELETE)<
br>", $PATH_INFO, $myrow[ "id"]);

}

}

?>



レコードを追加






if ($id) {


// 我们在编辑修改状態态,因数选择一条记录

$sql = "SELECT * FROM 従業員 WHERE id=$id";

$結果 = mysql_query($sql);

$myrow = mysql_fetch_array($result);

$id = $myrow["id"];

$first = $myrow["first"];

$last = $myrow["last"];

$アドレス = $myrow["アドレス"];

$位置 = $myrow["位置"];


// 显示id,供用户编辑修正

?>




}

?>


名:



姓:



アドレス:



位置:








}

?>



<`/html>



このプログラムは複雑に見えますが、実際には難しくありません。プログラムには 3 つの主要な部分があります。最初の if() ステートメントは、「情報の入力」データ送信ボタンが押されたかどうかをチェックします。存在する場合、プログラムは $id が存在するかどうかを確認します。存在しない場合はレコード ステータスを追加し、存在しない場合はレコード ステータスを変更します。

次に、変数 $delete が存在するかどうかを確認します。レコードが存在する場合は、そのレコードを削除します。最初の if() ステートメントでは POST メソッドを使用して送信された変数をチェックしましたが、今回は GET メソッドで渡された変数をチェックしていることに注意してください。

最後に、プログラムのデフォルトのアクションは、従業員のリストとテーブルを表示することです。同様に、変数 $id が存在するかどうかを確認したいと思います。存在する場合は、その値に基づいて対応するレコードを取得し、表示します。それ以外の場合は、空のテーブルが表示されます。

これで、学んだすべてを 1 つのプログラムにまとめました。 while() ループ、if() ステートメントを使用し、基本的な SQL 操作 (SELECT、INSERT、UPDATE、DELETE) をすべて実行しました。さらに、URL やフォーム入力を通じて、異なる Web ページ間で情報を渡す方法も知っています。

3 番目のレッスンでは、Web ページにインテリジェントな処理機能を追加する方法を学びます。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。