HTML、PHP、MySQL の間の対話
なぜデータベースを使用するのでしょうか?
ワールド・ワイド・ウェブ(WWW)は単なる情報の場所ではありません。何かあれば、ウェブサイトを作成して世界中の人々と共有してください。ただし、これは簡単な作業ではありません。ウェブサイトがどんどん大きくなると、次の問題に遭遇する可能性があります:
ウェブサイトに含まれているものが多すぎるため、訪問者は欲しいものをすぐに手に入れることができません。この問題は、Web サイトにとってある程度致命的です。
訪問者はあなたに情報を提供したいと考えており、この情報は後で使用できるように保存する必要があります。
上記の 2 つの問題は両方ともデータベースを通じて解決できます。
WWW の世界では、データベースがいたるところにあります。 Yahoo!、Amazon、eBay のような大規模なものから、単純な掲示板のような小規模なものまで、データベースが使用されていることがわかります。データベースはすべての高度なアプリケーションの基盤であるとさえ言えます。
PHP と MYSQL を使用する理由
私の知る限り、主要な商用 Web サイトのデータベースはほぼすべて SQL に基づいています。おそらくこれらの中で最も人気があるのは Oracle です。強力で、もちろん高価です。 SQLはアプリケーションではなく、Structured Query Language(Structured Query Language)の略称で、データベースの操作や問い合わせに使用されます。
近年、多くの企業が「オープンコード」SQL アプリケーションを開発していますが、おそらく最も有名なのは MySQL でしょう。無料なだけではなく、一般的な中小規模のデータベースアプリケーションであれば、Oracleと比べても遜色ないパフォーマンスを発揮します。
ウェブサイト上で MySQL を実行するには、データベースと対話するためのスクリプト言語が必要です。以前は Perl が最も人気がありました。しかし、今では PHP の方が優れているようです。何が違うのかと聞かないでください?? 私は以前は Perl を使用していましたが、問題なく動作していましたが、今では誰もが PHP を好むようです。人気の理由は確かにあります。
必要なソフトウェア
この部分の内容は、ChinaByte Network Academyの前回の記事で紹介しています。読者は、「win98 用のローカル PHP 開発のセットアップ」の記事を参照してください。ここではこれ以上の詳細は説明しません。
HTMLとPHP
Author: Yangmei Compilation この記事のクリック数: 398
PHPの仕組みを見てみましょう。次のコードを見てください:
<
<
< /html>
このページがリクエストされると、ブラウザに「Hello, world」が表示されます。
ご覧のとおり、HTMLファイルの中にPHPスクリプトが埋め込まれています。 「 < ? 」で始まり「 ?> 」で終わります。それだけでなく、PHP スクリプトに HTML タグを埋め込むこともできます。
< ?php
print "< body>";
print "Hello, world .";
print "< /body>";
print "< /html>";
?> 2 つの方法は、異なる手段で同じ目的を達成しますが、結果は同じです。ただし、特殊な場合には、いずれかを選択した方が便利な場合があります。
PHP の prints ステートメント
著者: Yangmei がこの記事をまとめました クリック数: 398
PHP と HTML 間の最も単純な対話は、print ステートメントによって実現されます:
< ?php
print "Hello, world."; ?>
print は、ブラウザ ウィンドウにテキストを表示するために使用される関数です。echo 関数は、表示する複数のテキストを区切るために「,」を使用します。これは、文字列定数と変数が混在している場合に便利です。
数字の出力をフォーマットするために使用される printf 関数もあります。数値は整数または科学的表記法で表示できます。
これらの関数では、括弧の使用法が異なります:
echo には括弧を含めないでください
printf には
printオプションを付ける必要があります
文字列や数値を表示するのは非常に困難です シンプルで、変数名または定数の後に続けるだけですステートメントを印刷します。ただし、配列を表示したい場合は、次のようにも記述する必要があります:
print $myarray;
出力結果は「Array」となり、PHP は $myarray が配列であることを示します。これは、変数が配列であるかどうかわからない場合に役立ちますが、ここでは配列の内容を確認したいと考えています。
implode 関数を使用すると、配列を文字列に変換できます。これには 2 つのパラメータが含まれており、1 つ目は配列変数名、2 つ目は配列内容の区切り文字です。変換が完了すると、配列の内容が区切り文字で結合されて文字列が形成されます:
$implodedarray = implode ($myarray, ", ");
print $implodedarray 関数も使用できます。配列 show を実装します。この関数は、配列の各内容に対して同じ機能操作を実行します。例:
function printelement ($element)
{
print ("$element< p>");
array_walk($myarray, "printelement");
PHP が MySQL にデータを送信する方法
著者 : この記事を編集するためのクリック数: 398
次のコードは非常に単純な HTML フォームです。フォームアクション = submitform.php3 メソッド = GET>
姓: < 入力タイプ=テキスト名=名前=最大長=25>
名: < 入力タイプ=テキスト名=名前=最大長= 25>
<
< /html>データを入力して送信ボタンを押してください、このフォームはデータを submitform.php3 に送信します。この PHP スクリプトは、submitform.php3 のコードを次に示します。
<
mysql_select_db (dbname);
mysql_query ("INSERT INTO tablename (first_name, last_name)
VALUES ('$first_name', '$last_name')
"); ( " ");
print ("< p>");
?> body>
< /html>
コードの3行目の「ユーザー名」と「パスワード」は、それぞれMySQLデータベースにログインするためのアカウント番号とパスワードを表します。 5行目の「dbname」はMySQLデータベースの名前を表します。 13行目の「tablename」はデータベース内のテーブルの名前です。
送信を押すと、入力した名前が新しいページに表示されます。ブラウザの URL バーをもう一度見てください。その内容は次のようになります:
…/submitform.php3?first_name=Fred&last_name=Flintstone
フォームの GET メソッドを使用しているため、データは URL を通じて取得されます。 submitform.php3 に送信されます。明らかに、GET メソッドには制限があります。転送するコンテンツが多い場合、GET は使用できず、POST メソッドのみが使用できます。ただし、どのような方法を使用しても、データ転送が完了すると、PHP はフォーム内の各フィールドの名前 (フォームの name 属性) と同じ変数を自動的に作成します。
PHP 変数はすべてドル記号で始まります。このように、submitform.php3 スクリプトの処理中に、$first_name と $last_name という 2 つの変数が存在し、変数の内容が入力されます。
入力した名前が実際にデータベースに入力されているか確認してみましょう。 MySQL を起動し、mysql> プロンプトで次のように入力します:
mysql> select * from tablename
入力した内容のテーブルを取得できるはずです:
+---------- - -+----------------+
+----------+-------- --- -+
| ルーフェン
+----------------+----------------+
セット内の 1 行 (0.00 秒)
submitform.php3 がどのように機能するかを分析してみましょう:
スクリプトの最初の 2 行は次のとおりです:
mysql_connect (localhost, username, password)
mysql_select_db (dbname);
これらの 2 つの関数呼び出しが使用されます。 MySQL データベースを開きます。 特定のパラメーターの意味は先ほど述べました。
次の行は SQL ステートメントを実行します:
mysql_query ("INSERT INTO tablename (first_name, last_name)
VALUES ('$first_name', '$last_name')
"); mysql_query 関数が使用されます。選択したデータベースに対する SQL クエリ。 mysql_query 関数では任意の SQL ステートメントを実行できます。実行する SQL ステートメントは文字列として二重引用符で囲み、その中の変数は一重引用符で囲む必要があります。
注意すべき点: MySQL ステートメントはセミコロン (;) で終わる必要があります。これは PHP コードの行にも当てはまりますが、PHP スクリプト内の MySQL ステートメントにはセミコロンを含めることはできません。つまり、mysql> プロンプトで MySQL コマンドを入力するときは、次のようにセミコロンを追加する必要があります。
INSERT INTO tablename (first_name, last_name)
VALUES ('$first_name', '$last_name');このコマンドは PHP スクリプト内で使用されるため、セミコロンを削除する必要があります。その理由は、SELECT や INSERT などの一部のステートメントはセミコロンの有無にかかわらず機能するためです。ただし、UPDATE など、セミコロンを追加すると機能しないステートメントもあります。トラブルを避けるために、このルールを覚えておいてください。
PHP を使用して MySQL からデータを抽出する方法
次に、このタスクを実行するための別の HTML フォームを作成します。
< p>
姓: < 入力タイプ=名前= 最大長=25>
名: <名前 = last_name サイズ = 25 & gt;
& lt;
& lt; & gt;
、このフォームを処理するための php スクリプトもあります:
<
< 、ユーザー名、パスワード);
mysql_select_db (データベース名);
if ($first_name == "")
{$first_name = '%';}
if ($last_name == "") {$last_name = '%' ;}
$result = mysql_query ("SELECT * FROM tablename
WHERE first_name LIKE '$first_name%'
AND last_name LIKE '$last_name%'
"); $row = mysql_fetch_array($result )) {
do {
print $row["first_name"];
print $row["last_name"]; ; p>");
} while($row = mysql_fetch_array($result));
} else {print "申し訳ありませんが、データベース内に一致するレコードが見つかりませんでした。 ";}
?>
< /body>
< /html>
フォームに取得したい内容を入力してSUBMITボタンを押すと、新しいページに入ります。一致するすべての検索結果をリストします。このスクリプトが検索タスクを完了する方法を見てみましょう。最初にデータベース接続を確立し、次にデータ テーブルを選択します。次に、次のようなステートメントがいくつかあります:
if ($first_name == "")
{$first_name = '%';}
if ($last_name = = "")
{$last_name = '%';}
これらの行は、フォームの各フィールドが空かどうかを確認するために使用されます。PHP の構文のほとんどは C 言語から派生したものであるため、ここでの等号の使用法に注意してください。も C と同じです。1 つの等号は代入記号であり、2 つの等号は論理的等価を表します。また、IF の後の条件が true の場合、実行される後続のステートメントは「{」と「}」に配置され、ステートメントの終わりを示すために各ステートメントの後にセミコロンを追加する必要があることにも注意してください。
パーセント記号 % は SQL 言語のワイルドカード文字です。少し理解すると、これら 2 行の意味がわかるはずです。「FIRST_NAME」フィールドが空の場合、すべての FIRST_NAME がリストされます。次の 2 つの文は同じ意味です。
$result = mysql_query ("SELECT * FROM tablename
WHERE first_name LIKE '$first_name%'
AND last_name LIKE '$last_name%'"
");
この行でほとんどの検索作業が完了します。 mysql_query 関数はクエリを完了すると、整数フラグを返します。クエリは、first_name 列が $first_name 変数と同じであり、last_name 列と $last_name 変数の値も同じであるレコードを選択し、それらを一時ストレージ。返された整数をこのレコードセットの識別子として使用します。
do {
print $row["first_name"]; " " );
print $row["last_name"];
} while($row = mysql_fetch_array($result));データベース内に一致するレコードが見つかりませんでした。 ";}
これが最後のステップで、表示部分です。mysql_fetch_array 関数は、まずクエリ結果の 1 行目の内容を抽出し、それを PRINT ステートメントを使用して表示します。この関数のパラメータは整数です。 mysql_query 関数によって返されるフラグと、mysql_fetch_array が正常に実行されると、レコード セット ポインタが自動的に下に移動し、mysql_fetch_array が再度実行されると、配列変数 $row が作成されます。 mysql_fetch_array 関数によってクエリ結果フィールドが入力され、一致するレコードが見つかった場合、変数 $row は空にならず、中括弧内のステートメントが実行されます。 :
do {
print $row["last_name"];
} while($row = mysql_fetch_array($result) ; ループ本体は少なくとも 1 回実行する必要があるため、while ループの代わりに do...while を使用する必要があります。実行されるループ本体は中括弧内にあります:
print $row["fir
PHP データで MySQL から抽出する方法
著者: Yangmei がこの記事を編集しました クリック数: 398
次に、このタスクを実行するための別の HTML フォームを作成します:
< html>
< body>
< フォーム action=searchform.php3 メソッド=GET> ;
< p>
姓: < input type=text name=first_name=25>
<
名: < 入力タイプ = 名前 = 最大長 = 25>
<
< /body>
< /html>
< body> という php スクリプトを作成します。 ; ?php
mysql_connect (ローカルホスト、ユーザー名、パスワード) ;
mysql_select_db (データベース名);
if ($first_name == "")
{$first_name = '%';} last_name == "")
{$last_name = ' %';}
$result = mysql_query ("SELECT * FROM テーブル名
WHERE first_name LIKE '$first_name%'
AND last_name LIKE '$last_name%'
");
if ($row = mysql_fetch_array( $result)) {
do {
print $row["first_name"];
print (" ");
print $row["last_name" ];
print ("< p>") ;
} while($row = mysql_fetch_array($result));
} else {print "申し訳ありませんが、データベースに一致するレコードが見つかりませんでした。 ";}
?>
< /body>
< /html>
フォームに取得したい内容を入力してSUBMITボタンを押すと、新しいページに入ります。一致するすべての検索結果をリストします。このスクリプトが検索タスクを完了する方法を見てみましょう。最初にデータベース接続を確立し、次にデータ テーブルを選択します。データベースアプリケーション。次に、次のようなステートメントがいくつかあります:
if ($first_name == "")
{$first_name = '%';}
if ($last_name == "")
{$last_name = '%' ;}
これらの行は、フォームの各フィールドが空かどうかを確認するために使用されます。 2 つの等号に注意してください。PHP の構文のほとんどは C 言語から派生したものであり、ここでの等号の使用法も C の場合と同じです。1 つの等号は代入記号であり、2 つの等号は論理演算子を表します。平等。また、IF の後の条件が true の場合、実行される後続のステートメントは「{」と「}」に配置され、ステートメントの終わりを示すために各ステートメントの後にセミコロンを追加する必要があることにも注意してください。
パーセント記号 % は SQL 言語のワイルドカード文字です。少し理解すると、これら 2 行の意味がわかるはずです。「FIRST_NAME」フィールドが空の場合、すべての FIRST_NAME がリストされます。次の 2 つの文は同じ意味です。
$result = mysql_query ("SELECT * FROM tablename
WHERE first_name LIKE '$first_name%'
AND last_name LIKE '$last_name%'"
");
この行でほとんどの検索作業が完了します。 mysql_query 関数はクエリを完了すると、整数フラグを返します。クエリは、first_name 列が $first_name 変数と同じであり、last_name 列と $last_name 変数の値も同じであるレコードを選択し、それらを一時ストレージ。返された整数をこのレコードセットの識別子として使用します。
do {
print $row["first_name"]; " " );
print $row["last_name"];
} while($row = mysql_fetch_array($result));データベース内に一致するレコードが見つかりませんでした。 ";}
これが最後のステップで、表示部分です。mysql_fetch_array 関数は、まずクエリ結果の 1 行目の内容を抽出し、それを PRINT ステートメントを使用して表示します。この関数のパラメータは整数です。 mysql_query 関数によって返されるフラグと、mysql_fetch_array が正常に実行されると、レコード セット ポインタが自動的に下に移動し、mysql_fetch_array が再度実行されると、配列変数 $row が作成されます。 mysql_fetch_array 関数によってクエリ結果フィールドが入力され、一致するレコードが見つかった場合、変数 $row は空にならず、中括弧内のステートメントが実行されます。 :
do {
print $row["last_name"];
} while($row = mysql_fetch_array($result) ; ループ本体は少なくとも 1 回実行する必要があるため、while ループの代わりに do...while を使用する必要があります。実行されるループ本体は中括弧内にあります:
print $row["first_name"];
print $row["last_name"]; 次に、Mysql_fetch_array 関数が再度呼び出されます。現在のレコードの内容を取得します。このプロセスはループを続けます。次のレコードが存在しない場合、mysql_fetch_array は false を返し、レコード セットは 1 回だけ走査されます。通常の配列と同様に、添字を使用して配列の各コンポーネントを参照することもできます。
print $row[0]; (" ");
print $row [1];
print ("< p>");
これらの 4 つのステートメントをよりコンパクトに記述することもできます。 ], " ", $row[1 ], "< p>";
一致するレコードが見つからない場合、$row には内容がなく、if ステートメントの else 節が呼び出されます。 else {print "申し訳ありませんが、データベース内に一致するレコードが見つかりませんでした。 ";}
クエリが正常に動作しているか確認してください
著者:Yangmeiがこの記事をまとめましたクリック数:398
SELECT、DELETE、その他のクエリは正常に動作しますか?これは明確にしておく必要があり、安易に結論を急ぐのは絶対にやめてください。
INSERT クエリのチェックは比較的簡単です:
$result = mysql_query ("INSERT INTO tablename (first_name, last_name)
VALUES ('$first_name', '$last_name')
"); (!$result)
{
echo "< b>INSERT query failed:< /b> ", mysql_error();
exit
}
ただし、このチェックメソッドは SELECT クエリ用です。動作しない場合は、次のようにする必要があります:
$selectresult = mysql_query ("SELECT * FROM tablename
WHERE first_name = '$first_name'
AND last_name = '$last_name'
"); ($selectresult) == 1)
{
print "SELECT クエリが成功しました。";
}
elseif (mysql_num_rows($selectresult) == 0)
{
print "SELECT "クエリが失敗しました。" ;
exit;
}
DELETE クエリの場合は次のようになります:
$deleteresult = mysql_query ("DELETE FROM tablename
WHERE first_name = '$first_name'
AND last_name = '$last_name '
");
if (mysql_affected_rows($deleteresult) == 1)
{
print "DELETE クエリが成功しました";
}
elseif (mysql_affected_rows($deleteres)究極) != 1)
{
print "DELETE クエリが失敗しました"
}
http://www.bkjia.com/PHPjc/315134.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/315134.html