PHP で MySQL にデータを送信する方法
HTML フォームについてはよく知っている必要があります。次のコードは非常に単純な HTML フォームです。
");
print (「登録フォームにご記入いただきありがとうございます」);
?>
本文>
< /html>
コードの 3 行目の「ユーザー名」と「パスワード」は、それぞれ MySQL データベースにログインするためのアカウント番号とパスワードを表します。 5行目の「dbname」はMySQLデータベースの名前を表します。 13行目の「tablename」はデータベース内のテーブルの名前です。
送信を押すと、入力した名前が新しいページに表示されます。ブラウザの URL バーをもう一度見てください。その内容は次のようになります。
… /submitform.php3?first_name=フレッド&last_name=フリントストーン
フォームの GET メソッドを使用しているため、データは URL 経由で submitform.php3 に送信されます。明らかに、GET メソッドには制限があります。転送するコンテンツが多い場合、GET は使用できず、POST メソッドのみが使用できます。ただし、どのような方法を使用しても、データ転送が完了すると、PHP はフォーム内の各フィールドの名前 (フォームの name 属性) と同じ変数を自動的に作成します。
このように、PHP 変数はすべてドル記号で始まります。submitform.php3 スクリプトの処理中に、変数の内容は $first_name と $last_name になります。
入力した名前が実際にデータベースに登録されているか確認してみましょう。 MySQL を起動し、mysql> プロンプトに次のように入力します。
mysql> テーブル名から * を選択します。
入力した内容を含むテーブルを取得できるはずです:
+----------------+----------------+
| 姓 |
+----------------+----------------+
| 劉峰
+----------------+----------------+
1 行セット (0.00 秒)
submitform.php3 がどのように機能するかを分析してみましょう:
スクリプトの最初の 2 行は次のとおりです:
mysql_connect (ローカルホスト、ユーザー名、パスワード);
mysql_select_db (データベース名);
これら 2 つの関数呼び出しは、MySQL データベースを開くために使用されます。特定のパラメーターの意味はすでに述べたとおりです。
次の行は SQL ステートメントを実行します:
mysql_query ("INSERT INTO テーブル名 (first_name, last_name)
値 ('$first_name', '$last_name')
");
mysql_query 関数は、選択したデータベースに対して SQL クエリを実行するために使用されます。 mysql_query 関数では任意の SQL ステートメントを実行できます。実行する SQL ステートメントは文字列として二重引用符で囲み、その中の変数は一重引用符で囲む必要があります。
注意すべき点が 1 つあります。MySQL ステートメントはセミコロン (;) で終わる必要があり、PHP コードの行にも同じことが当てはまりますが、PHP スクリプト内の MySQL ステートメントにはセミコロンを含めることはできません。つまり、mysql> プロンプトで MySQL コマンドを入力するときは、セミコロンを追加する必要があります。
INSERT INTO テーブル名 (first_name, last_name)
VALUES ('$first_name', '$last_name');
ただし、このコマンドが PHP スクリプトに含まれる場合は、セミコロンを削除する必要があります。その理由は、SELECT や INSERT などの一部のステートメントはセミコロンの有無にかかわらず機能するためです。ただし、UPDATE など、セミコロンを追加すると機能しないステートメントもあります。トラブルを避けるために、このルールを覚えておいてください。
PHP を使用して MySQL からデータを抽出する方法
ここで、このタスクを実行するための別の HTML フォームを作成します:
< フォームアクション=searchform.php3 メソッド=GET>
クエリを入力してください:
<
姓: < 入力タイプ=テキスト 名前=名 サイズ=25 最大長=25>
<
名前: < 入力タイプ=テキスト 名前=姓 サイズ=25 最大長=25>
<
<入力タイプ=送信>
< /フォーム>
本文>
< /html>
同様に、このフォームを処理するための php スクリプトもあります。searchform.php3 ファイルを作成しましょう。
< ?php
mysql_connect (ローカルホスト、ユーザー名、パスワード);
mysql_select_db (データベース名);
if ($first_name == "")
{$first_name = '%';}
if ($last_name == "")
{$last_name = '%';}
$result = mysql_query ("SELECT * FROM テーブル名
WHERE first_name LIKE '$first_name%'
そして、last_name は「$last_name%」のように
");
if ($row = mysql_fetch_array($result)) {
してください{
$row["first_name"] を印刷します
印刷 (" ");
$row["姓"] を印刷します
print ("
");
while($row = mysql_fetch_array($result));
} else {print "申し訳ありませんが、データベース内に一致するレコードが見つかりませんでした。";}
?>
本文>
< /html>
取得したいコンテンツをフォームに入力して「送信」ボタンを押すと、一致するすべての検索結果をリストする新しいページが表示されます。このスクリプトが検索タスクをどのように完了するかを見てみましょう。
前のステートメントは上記と同じです。まず、データベース接続を確立し、次にデータベースとデータ テーブルを選択します。これらはすべてのデータベース アプリケーションに必要です。次に、次のような文がいくつかあります:
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 テーブル名
WHERE first_name LIKE '$first_name%'
そして、last_name LIKE '$last_name%'"
");
この行は、検索のほとんどの作業を行います。 mysql_query 関数はクエリを完了すると、整数フラグを返します。
クエリは、first_name 列が $first_name 変数と同じであり、last_name 列と $last_name 変数の値も同じであるレコードをすべてのレコードから選択し、それらを一時レコード セットに入れ、返された整数を次のように使用します。このレコードセットのマーク。
if ($row = mysql_fetch_array($result)) {
してください{
$row["first_name"] を印刷します
印刷 (" ");
$row["姓"] を印刷します
print ("
");
while($row = mysql_fetch_array($result));
} else {print "申し訳ありませんが、データベースに一致するレコードが見つかりませんでした。";}
これが最後のステップであり、表示部分です。 mysql_fetch_array 関数は、まずクエリ結果の最初の行の内容を抽出し、次に PRINT ステートメントを使用してそれを表示します。この関数のパラメータは、mysql_query 関数によって返される整数フラグです。 mysql_fetch_array が正常に実行されると、レコード セット ポインタは自動的に下に移動し、mysql_fetch_array が再度実行されると、レコードの次の行の内容が取得されます。
配列変数 $row は mysql_fetch_array 関数によって作成され、配列の各コンポーネントがクエリ結果の各フィールドに対応します。
一致するレコードが見つかった場合、変数 $row は空ではなく、中括弧内のステートメントが実行されます:
してください{
$row["first_name"] を印刷します
印刷 (" ");
$row["姓"] を印刷します
print ("
");
while($row = mysql_fetch_array($result));
これは do ... while ループです。 while ループとの違いは、最初にループ本体を実行し、次にループ条件が満たされているかどうかを確認することです。レコード セットが空ではない場合、ループ本体を少なくとも 1 回実行する必要があることはすでにわかっているため、while ループの代わりに do...while を使用する必要があります。中括弧内は実行されるループ本体です:
$row["first_name"] を印刷します
印刷 (" ");
$row["姓"] を印刷します
print ("
");
次のステップは、while 条件が満たされているかどうかを確認することです。 Mysql_fetch_array 関数が再度呼び出され、現在のレコードの内容が取得されます。このプロセスはループを続けます。次のレコードが存在しない場合、mysql_fetch_array は false を返し、ループは終了し、レコード セットが完全に走査されます。
mysql_fetch_array($result) によって返される配列は、フィールド名によって呼び出すことができるだけでなく、一般的な配列と同様に添字によって参照することもできます。このように、上記のコードは次のように書くこともできます:
$row[0] を印刷します
印刷 (" ");
$row[1] を印刷します
print ("
");
echo 関数を使用して、これら 4 つのステートメントをよりコンパクトに記述することもできます:
echo $row[0], " ", $row[1], "< p>";
一致するレコードが見つからない場合、$row にはコンテンツが存在せず、if ステートメントの else 節が呼び出されます:
else {print "申し訳ありませんが、データベース内に一致するレコードが見つかりませんでした。";}
上記では、PHP で MySQL にデータを送信する方法を、関連する側面も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。