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関数でリダイレクト♪
|
コラム インクルードファイルを使うと便利
注) 上記インクルードファイルを読み取るためには、下記のように指定してください。
|