ホームページ > php教程 > php手册 > php & mysql 3 日間パス 2

php & mysql 3 日間パス 2

WBOY
リリース: 2016-06-21 09:15:11
オリジナル
773 人が閲覧しました

mysql

1. While ループ

このレッスンでは、さらに深く掘り下げて、PHP と MySQL を使用して、いくつかのシンプルで便利なページを作成します。昨日作成したデータベースから始めて、データベース内のデータを表示しますが、少し磨きをかけます。

まず、次のコードを使用してデータベースの内容をクエリします。




$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query(" SELECT * FROM 従業員",$db);
echo "

n";
echo " /tr>n";
while ($myrow = mysql_fetch_row($result)) {
printf("
名前役職
%s %s%sn", $myrow[1], $myrow[2], $myrow[3]);
}
echo "
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", "root");
mysql_select_db("mydb",$db);
$result = mysql_query(" SELECT * FROM 従業員",$db);
if ($myrow = mysql_fetch_array($result)) {
echo "n";
echo "n";
do {
printf("
名前< td>アドレス
%s %s%sn", $myrow["first"], $myrow["last"], $myrow["address"]);
}
while ($myrow = mysql_fetch_array($result));
echo " < /table>n";
} else {
echo "Sorry, no records found! ";
}
?>





このプログラムにはたくさんのものが含まれています新しいコンテンツですが、すべて非常にシンプルです。 1 つ目は mysql_fetch_array() 関数です。この関数は mysql_fetch_row() に非常に似ていますが、1 つの違いがあります。この関数を使用すると、$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 コードを拡張してページのコンテンツを充実させましょう

ループ ステートメントの使用方法を学習しました。より実践的な例で説明しますが、その前に、Web フォーム、クエリ パラメータ文字列、およびフォームの GET メソッドと POST メソッドの処理方法を理解しておく必要があります。これについては、少し前の記事「コンテンツ」で説明しました (詳しくない場合)。この部分は、その記事を読むことができます

ここで、クエリ パラメータ文字列を扱う必要があります。ご存知のとおり、パラメータの内容をクエリ パラメータ文字列に書き込む方法は 3 つあります。1 つ目は GET メソッドを使用することです。 2 つ目は、ブラウザのアドレス バーに URL を入力するときにクエリ パラメータを直接追加する方法です。3 つ目は、Web ページのハイパーリンクにクエリ パラメータ文字列を埋め込み、リンクの内容を次のようにします。 . ここでは最後の方法を使用します

最初に、リストするデータベースを再度クエリします。次のプログラムを見てください。そのほとんどはすでに馴染みのあるものです。 , "mydb",$db);
$result = mysql_query("SELECT * FROM members", $db);
if ($myrow = mysql_fetch_array($result)) {
do {
printf("
%s %s< br>n", $PATH_INFO, $myrow["id"], $myrow[" first"], $myrow["last"]);
} while ($myrow = mysql_fetch_array($result));
} else {
echo 「申し訳ありません、記録が見つかりません! ";
}
?>
では、すべての引用符の前にバックスラッシュがあります。このバックスラッシュは、次の文字をプログラム コードとして扱うのではなく、直接表示するように PHP に指示します。また、使用法にも注意してください。 $PATH_INFO 変数はプログラム内でアクセスでき、プログラム自体の名前とディレクトリの場所を保存するために使用されます。これは、$PATH_INFO を使用してプログラム自体を呼び出すことができるためです。プログラムが移動された場合でも、他のディレクトリや他のマシンに移動した場合でも、このプログラムが正しく呼び出されることを確認できます。プログラムによって生成された Web ページに含まれるハイパーリンクは、プログラム自体を再度呼び出すと、いくつかのクエリ パラメータが追加されます。PHP は、クエリ パラメータ文字列に「name = value」のような形式が含まれていることを確認すると、変数名を含む変数を自動的に生成します。この機能を使用すると、PHP$ を問い合わせるだけで、プログラムが初めて実行されたか 2 回目に実行されたかを判断できます。変数は存在しますか?

この質問に対する答えが分かれば、プログラムを 2 回目に呼び出すときにいくつかの異なる結果を表示できます。 ("localhost", "root");
mysql_select_db("mydb",$db);
// 個々のレコードを表示
// 単一レコードの内容を表示
if ($id) {
$ result = mysql_query( "SELECT * FROM 従業員 WHERE id=$id",$db);
$myrow = mysql_fetch_array($result);
printf("Name: %sn
", $myrow["first"] );
printf ("姓: %sn
", $myrow["last"]);
printf("住所: %sn
", $myrow["address"]);
printf(" 位置: % sn
", $myrow["position"]);
} else {
// 従業員リストを表示
// 従業員リストを表示します
$result = mysql_query("SELECT * FROMemployees",$db);
if ($myrow = mysql_fetch_array($result)) {
// 表示するレコードがある場合はリストを表示します
// if レコードがあれば一覧表示
do {
printf("%s %s
n", $PATH_INFO,
$myrow ["id"], $myrow["first"], $myrow["last"]);
} while ($myrow = mysql_fetch_array($result));
} else {
//表示するレコードがありません
/ / 表示するレコードがありません echo "Sorry, no records found!";複雑になるので、ここで説明します。何が起こっているのかを説明するためにコメントが追加されました。 // を使用して単一行のコメントを追加することも、/* と */ を使用して大きなコメントを囲むこともできます。

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



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

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

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








Name:


姓:


住所:


Position:












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

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

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

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







if ($submit) {


// フォーム入力の処理

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

echo "$name = $value
n";

}

} else{


// フォームを表示

?>



名:


姓:


ア​​ドレス:


位置:







} / / end if, if opens

?>





これでプログラムは正常に実行され、フォームに入力された内容を取得して送信できるようになりました。データベース。






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{

// テーブルの内容を表示

?>



名:


姓:


Address:


Position:







} // end if, end of if

?>







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

心配しないでください。段階的に見ていきましょう。 >>

5. データを変更する

このチュートリアルでは、実行する SQL ステートメントを変数 ($sql) に入れ、mysql_query() を使用してデータベース クエリを実行しました。これはデバッグ時に便利です。プログラムに問題が発生した場合は、いつでも SQL ステートメントの内容を表示して、文法上のエラーがないかチェックできます。

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

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







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

mysql_select_db("mydb", $ db);

if ($id) {

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

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

$result = mysql_query($sql); mysql_fetch_array($result);

?>



">

Name:">


姓:


ア​​ドレス:">
Position:">


<入力タイプ="送信" name="送信" value="情報を入力">




} else {

// 従業員リストを表示

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

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

printf("%s %s< /a>
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 = "従​​業員の設定を更新します 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);

?>



">

名:">


姓:">


住址:"> ;


职位:">







}

} else {

// 显示员工列表

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

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

printf("
%s %s
n", $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 = "UPDATE 従業員 SET first='$first',last='$last',
address='$address',position='$position' WHERE id=$id";

} else {

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

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

$result = mysql_query($sql);

echo "记录修改成功!

";

} elseif ($delete) {

// 删除一条记录

$sql = "従​​業員から削除WHERE id=$id";

$result = mysql_query($sql);

echo "记录删除成功!

";

} else {

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

if (!$id) {

// 結果が修正状態态,则显示员工列表 $result = mysql_query("SELECT * FROM従業員",$db);

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

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

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

}

}

?>



ADDレコード






if ($id ) {


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

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

$result = mysql_query($sql);

$ myrow = mysql_fetch_array($result);

$id = $myrow["id"];

$first = $myrow["first"];

$last = $myrow["last"];

$address = $myrow["address"];

$position = $myrow["position"];

// ユーザーが編集および変更できる ID を表示します

?>




}

?>

Name:


姓:


アドレス:


Position:







}

?>



<`/html>



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

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

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

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

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



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート