ホームページ >バックエンド開発 >PHPチュートリアル >メリー・ロンリー・クリスマス PHP MySQL にデータを送信する方法
次のコードは、非常に単純な HTML フォームです。 type=text name=first_name size=25 maxlength=25>
< input type=submit> ;
< /body>
< /html>
データを入力して送信ボタンを押すと、このフォームは submitform.php3 にデータを送信します。この PHP スクリプトは、submitform.php3 のコードを次に示します。
mysql_query ("INSERT INTO tablename (first_name, last_name)
VALUES ('$first_name', '$last_name')
");
print ($first_name)
print ($last_name);
print ("< p>");
< /body>
<
; username " と "password" は、それぞれ MySQL データベースにログインするためのアカウント番号とパスワードを表します。 5行目の「dbname」はMySQLデータベースの名前を表します。 13行目の「tablename」はデータベース内のテーブルの名前です。
送信を押すと、入力した名前が新しいページに表示されます。ブラウザの URL バーをもう一度見てください。その内容は次のようになります:
…/submitform.php3?first_name=Fred&last_name=Flintstone
フォーム GET メソッドを使用しているため、データは URL を通じて URL に送信されます。 .submitform.php3。明らかに、GET メソッドには制限があります。転送するコンテンツが多い場合、GET は使用できず、POST メソッドのみが使用できます。ただし、どのような方法を使用しても、データ転送が完了すると、PHP はフォーム内の各フィールドの名前 (フォームの name 属性) と同じ変数を自動的に作成します。
PHP 変数はすべてドル記号で始まります。このように、submitform.php3 スクリプトの処理中に、変数の内容は入力したものになります。
入力した名前が実際にデータベースに入力されているかどうかを確認してみましょう。 MySQL を起動し、mysql> プロンプトで次のように入力します。
mysql> 入力した内容のテーブルを取得できるはずです。 -----------+
| 姓 |
+-----------+----------+
| Rufeng
+----------------+---------------+
1 rows in set (0.00 sec)
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 ステートメントは文字列として二重引用符で囲み、その中の変数は一重引用符で囲む必要があります。
注意すべき点が 1 つあります。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 フォームを作成します。
メソッド = GET> :
< p>
姓: < 入力タイプ=テキスト名=名前=最大長=25> ;
< p<
< /form<
<
; searchform .php3 ファイル:
'%';}
if ($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>
取得したいコンテンツをフォームに入力して送信ボタンを押すと、新しいページが表示され、すべての一致する検索がリストされます。このスクリプトが検索タスクを完了する方法を見てみましょう。最初にデータベース接続が確立され、次にデータベースとデータ テーブルが選択されます。すべてのデータベース アプリケーションには次のようなステートメントがいくつかあります:
if ($first_name == "")
{$first_name = '%';}
if ($last_name == "")
{$last_name = '%' ;}
これらの行は、フォームの各フィールドが空かどうかを確認するために使用されます。PHP の構文のほとんどは C 言語から派生したものであり、ここでの等号の使用法も同じであるため、2 つの等号に注意してください。 C と同様。 : 1 つの等号は代入記号であり、2 つの等号は論理的等価性を表します。IF の後の条件が true の場合、後で実行されるステートメントは "{" と " に配置されます。 }"、および各ステートメントの後には、ステートメントの終わりを示すセミコロンが続く必要があります。パーセント記号 % は、SQL 言語のワイルドカード文字です。1 つの点を理解した後、これらの 2 行の意味がわかるはずです。 "FIRST_NAME" フィールドが空の場合、次の 2 つの文は同じ意味になります。
$result = mysql_query ("SELECT * FROM tablename LIKE '$first_name%'
AND last_name LIKE '$ last_name%'"
" );
この行は検索のほとんどの作業を行います。 mysql_query 関数はクエリを完了すると、整数フラグを返します。
クエリは、first_name 列が $first_name 変数と同じであり、last_name 列と $last_name 変数の値も同じであるレコードをすべてのレコードから選択し、それらを一時レコード セットに入れ、返された整数を次のように使用します。このレコードセットのマーク。
if ($row = mysql_fetch_array($result)) {
do {
print $row["first_name"];
print $row["last_name"]; ;");
} 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 は空ではなく、中括弧内のステートメントが実行されます。
do {
print $row["first_name"]
print (" "); $ row["last_name"];
print ("< p>");
これは do...while ループです。 while ループとの違いは、最初にループ本体を実行し、次にループ条件が満たされているかどうかを確認することです。レコード セットが空ではない場合、ループ本体を少なくとも 1 回実行する必要があることはすでにわかっているため、while ループの代わりに do...while を使用する必要があります。中括弧内は実行されるループ本体です:
print $row["first_name"];
print $row["last_name"]; );
次のステップは、while 条件が満たされているかどうかを確認することです。 Mysql_fetch_array 関数が再度呼び出され、現在のレコードの内容が取得されます。このプロセスはループを続けます。次のレコードが存在しない場合、mysql_fetch_array は false を返し、ループは終了し、レコード セットが完全に走査されます。
mysql_fetch_array($result) によって返される配列は、フィールド名によって呼び出すことができるだけでなく、通常の配列のように添え字によって参照することもできます。このように、上記のコードは次のように書くこともできます。
print $row[0];
print ("< p>"); echo 関数を使用して、次の 4 つのステートメントをよりコンパクトに記述することもできます:
echo $row[0], " ", $row[1], "< p>";
一致するレコードが見つからない場合、$row には内容がない場合、if ステートメントの else 節が呼び出されます:
else {print "申し訳ありませんが、データベースに一致するレコードが見つかりませんでした。 ";}
上記では、merrylonelychristmas の内容を含め、PHP が MySQL にデータを送信する方法を紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。