2015/6/23 久米
PHP手順 | SELECT文 発行例 |
INSERT, UPDATE, DELETE文 発行例 |
1. MySQLに接続する。 | $con=mysqli_connect("localhost", "web2", "771", "web2"); | |
2. SQL文を組み立てる。 後から代入箇所を?とする |
$sql="SELECT title, artist, point FROM ranking WHERE artist=? AND point>=? ORDER BY point DESC"; |
|
3.ステートメント(指示文)を用意。 | $stmt=mysqli_prepare($con, $sql); | |
4.ステートメントに変数をバインド。 ?の箇所に順番に sは文字列、iは整数の意味 |
mysqli_stmt_bind_param($stmt, 'si', $artist, $point); $artist=なにか指定; $point=なにか指定; |
|
5.ステートメントを実行する。 | $rst=mysqli_stmt_execute($stmt); | |
6.selectの場合、結果セットを取得し 7.結果を連想配列に変換し処理する。 メモリ開放(早く開放できる) |
$rst=mysqli_stmt_get_result($stmt); while ($row=mysqli_fetch_array($rst)) { // } mysqli_free_result($rst); |
//5の戻り値を if($rst) でチェック |
8.ステートメントを閉じる | mysqli_stmt_close($stmt); | |
9. MySQLとの接続を閉じる (自動切断するので省略可能) |
mysqli_close($con); |
検索フォーム select.html |
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>select</title> </head> <body> <h1>ランキング検索</h1> <form method="post" action="select.php"> アーティスト前方一致:<input type="text" name="artist"><br> ポイント以上:<input type="text" name="point">以上<br> <input type="submit" name="sub" value="検索"> </form> </body> </html> |
select.php | <?php if(!isset($_POST['sub'])) exit("Access Error."); $artist=$_POST['artist']."%"; $point=$_POST['point']; if($point=="")$point=0; $con=mysqli_connect("localhost", "web2", "771", "web2"); $sql="SELECT title, artist, point FROM ranking WHERE artist LIKE ? AND point>=? ORDER BY point DESC"; $stmt=mysqli_prepare($con, $sql); mysqli_stmt_bind_param($stmt, 'si', $artist, $point); mysqli_stmt_execute($stmt); $rst=mysqli_stmt_get_result($stmt); $m="<table border='1' cellspacing='0' cellpadding='2'>"; $m.="<tr bgcolor='#CCCCCC'><td>順位</td><td>タイトル</td><td>アーティスト</td><td>ポイント</td></tr>"; $juni=0; while ($row=mysqli_fetch_array($rst)) { $juni=$juni+1; $m.="<tr><td>".$juni."</td>"; $m.="<td>".$row["title"]."</td>"; $m.="<td>".$row["artist"]."</td>"; $m.="<td>".$row["point"]."</td></tr>"; } $m.="</table>"; mysqli_free_result($rst); mysqli_stmt_close($stmt); mysqli_close($con); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>select</title> </head> <body> <h1>ランキング検索</h1> <?php print $m; ?> </body> </html> |
データ挿入 フォーム insert.html |
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>insert</title> </head> <body> <h1>ランキング登録</h1> <form method="post" action="insert.php"> タイトル:<input type="text" name="title"><br> アーティスト:<input type="text" name="artist"><br> ポイント:<input type="text" name="point"><br> <input type="submit" name="sub" value="登録"> </form> </body> </html> |
insert.php | <?php if(!isset($_POST['sub'])) exit("Access Error."); $title=$_POST['title']; $artist=$_POST['artist']; $point=$_POST['point']; if($point=="")$point=0; $con=mysqli_connect("localhost", "web2", "771", "web2"); $sql="INSERT INTO ranking (title, artist, point) VALUES (?, ?, ?)"; $stmt=mysqli_prepare($con, $sql); mysqli_stmt_bind_param($stmt, 'ssi', $title, $artist, $point); $rst=mysqli_stmt_execute($stmt); $m=""; if($rst) $m="成功しました"; else $m="失敗"; mysqli_stmt_close($stmt); mysqli_close($con); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>insert</title> </head> <body> <h1>ランキング登録</h1> <p><?php print $m; ?></p> </body> </html> |
update1.htnl | 検索フォーム select.htmlと同じもの |
select.php を改良して 更新リンク追加 update2.php |
select.phpの下記個所(赤)を加える while($row=mysqli_fetch_array($rst)){ $juni=$juni+1; $m.="<tr><td>".$juni."</td>"; $m.="<td><a href='update.php?id=".$row["id"]."'>".$row["title"]."</a></td>"; $m.="<td>".$row["artist"]."</td>"; $m.="<td>".$row["point"]."</td></tr>"; } |
update3.php 更新フォーム |
<?php if(!isset($_GET['id'])) exit("Access Error."); $id=$_GET['id']; $con=mysqli_connect("localhost", "web2", "771", "web2"); $sql="SELECT * FROM ranking WHERE id=? ORDER BY point DESC"; $stmt=mysqli_prepare($con, $sql); mysqli_stmt_bind_param($stmt, 'i', $id); mysqli_stmt_execute($stmt); $rst=mysqli_stmt_get_result($stmt); $row=mysqli_fetch_array($rst); $id=$row["id"]; $title=$row["title"]; $artist=$row["artist"]; $point=$row["point"]; mysqli_free_result($rst); mysqli_stmt_close($stmt); mysqli_close($con); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>update</title> </head> <body> <h1>ランキング編集</h1> <form method="post" action="update4.php"> <input type="hidden" name="id" value="<?php print $id; ?>"> タイトル:<input type="text" name="title" value="<?php print $title; ?>"><br> アーティスト:<input type="text" name="artist" value="<?php print $artist; ?>"><br> ポイント:<input type="text" name="point" value="<?php print $point; ?>"><br> <input type="submit" name="sub" value="編集"> </form> </body> </html> |
update4.php | <?php if(!isset($_POST['sub'])) exit("Access Error."); $id=$_POST['id']; $title=$_POST['title']; $artist=$_POST['artist']; $point=$_POST['point']; $con=mysqli_connect("localhost", "web2", "771", "web2"); $sql="UPDATE ranking SET title=?, artist=?, point=? WHERE id=?"; $stmt=mysqli_prepare($con, $sql); mysqli_stmt_bind_param($stmt, 'ssii', $title, $artist, $point, $id); $rst=mysqli_stmt_execute($stmt); $m=""; if($rst) $m="成功しました"; else $m="失敗"; mysqli_stmt_close($stmt); mysqli_close($con); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>update</title> </head> <body> <h1>ランキング編集</h1> <p><?php print $m; ?></p> </body> </html> |
delete1.htnl | 検索フォーム select.htmlと同じもの |
select.php を改良して 更新リンク追加 delete2.php |
select.phpの下記個所(赤)を加える $m="<table border='1' cellspacing='0' cellpadding='2'>"; $m.="<tr bgcolor='#CCCCCC'><td>順位</td><td>タイトル</td><td>アーティスト</td><td>ポイント</td><td> </td></tr>"; $juni=0; while($row=mysqli_fetch_array($rst)){ $juni=$juni+1; $m.="<tr><td>".$juni."</td>"; $m.="<td><a href='updateform.php?id=".$row["id"]."'>".$row["title"]."</a></td>"; $m.="<td>".$row["artist"]."</td>"; $m.="<td>".$row["point"]."</td>"; $m.="<td><a href='delete.php?id=".$row["id"]."'>削除</a></td></tr>"; } $m.="</table>"; |
delete3.php 削除フォーム |
<?php if(!isset($_GET['id'])) exit("Access Error."); $id=$_GET['id']; $con=mysqli_connect("localhost", "web2", "771", "web2"); $sql="DELETE FROM ranking WHERE id=?"; $stmt=mysqli_prepare($con, $sql); mysqli_stmt_bind_param($stmt, 'i', $id); $rst=mysqli_stmt_execute($stmt); $m=""; if($rst) $m="成功しました"; else $m="失敗"; mysqli_stmt_close($stmt); mysqli_close($con); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>delete</title> </head> <body> <h1>ランキング削除</h1> <p><?php print $m; ?></p> </body> </html> |
例 DSゲーム検索サイト(タイトル、メーカー、円)、
お酒検索サイト(銘柄、種類、円)、
クラッシック音楽検索サイト(曲名、作曲家、種類)、就活検索サイト(社名、募集職種、初任給)
コラム header関数でリダイレクト♪
|
コラム インクルードファイルを使うと便利
注) 上記インクルードファイルを読み取るためには、下記のように指定してください。
|