<html>
<head> <title>データを変更する(MySQL)</title>
</head>
<body>
<h3>データを変更する(MySQL)</h3>
<?php ;
// 接続設定(サーバ/データベース/ユーザ/パスワード) $sv = "localhost";
$dbname = "bookdb"; $user = "root"; $pass = "nisi";
// 表示文字コード $disp_enc = "SJIS";
// データの文字コードを変換する関数 function cnv_dbstring($string, $enc)
☆☆{ ・functionとはユーザ定義関数を入力する場合に使用。
// 文字コードを変換する
$det_enc = mb_detect_encoding($string);
↑mb_detect_encoding(文字列)で文字列$stringの 文字エンコーディングを検出し,それを返す
if ($det_enc and $det_enc != $enc) { return mb_convert_encoding($string,
$enc, $det_enc);
↑mb_convert_encoding(文字列,to-encoding,from-encoding)で文字列 $stringの文字エンコーディングを$det_encから$encに変換 } else { return $string; } }
☆☆文字列 strの文字エンコーディングを from-encoding から to-encoding に変換します。
from-encoding により変換前の文字エンコーディ ング名が指定されます。これは、配列またはカンマ区切りの文字列とす ることが可能です。省略時のデフォルトは内部文字エンコーディングで す。
//データをSQL用に変換 function cnv_sqlstr($string) { if (!get_magic_quotes_gpc()) { return addslashes($string); } }
// データベースに接続する
$conn = mysql_connect($sv, $user, $pass) or die("接続エラー");
☆☆・connect→db_connectをデータベースに接続する機能として定義する。 引数ではなく接続情報を格納した$connを使います。
↑mysql_connect(サーバ, ユーザ, パスワード)でMySQLサーバに接続.
☆☆ die(メッセージ)は接続できない場合にメッセージを出力して終了すること mysql_select_db($dbname) or die("接続エラー"); ↑mysql_select_db(データベース名)でMySQLサーバ内のデータベースに接続. die(メッセージ)は接続できない場合にメッセージを出力して終了すること
//変更するデータを取得 if (count ($_post) > 0) { $id= $_post["id"];
$bookname= $_post["bookname"]; $author = $_post["author"];
$pub = $ post["pub"]; $price = $ post["price"];$year=$post["year"];
$point = $post["point"];//データが送信されたときはデータを変更 if (strlen($id) and stren($nam) and stren($pre) and stren($ag)) { ・⇒☆
//データを変更 $sql ="UPDATE table1 SET
☆☆・updateはデータを変更する場合にupdate〜setを使って利用する。
追加のときと同じように、文字コードはデータベースに合わせて使用。 nam =
'".cnv_sqlstr(cnv_dbstring($nam, $db_enc))."', pre= '".cnv_sqlstr(cnv_dbstring($nam,
$db_enc))."', ag= ".$ag." WHERE (id =".$id.");";
☆☆・whereを記述しないと変えたくないデータも変わってしまうので注意する。 mysql_query($sql,$conn)
or die("データ変更エラー"); } }
// データを取り出す $sql = "SELECT id, bookname,author pub, price,year,point
FROM table1 ORDER BY id"; $res = mysql_query($sql, $conn) or die("データ抽出エラー");
↑mysql_query(SQL,接続ID)でMySQLサーバ内のデータベースをSQLで操作する .die(メッセージ)は接続できない場合にメッセージを出力して終了すること
// mysql_query()関数でデータを取り出すSQLを実行します。 取り出したデータは、次のように1行ずつ処理し、ブラウザに表示させています。
// 取り出したデータを表示する echo "<table border=\"1\">";
echo "<tr>"; echo "<td>ID</td>";
echo "<td>名前</td>"; echo "<td>出身</td>";
echo "<td>年齢</td>"; echo "</tr>";
☆☆・ehoは文字を取り出したいときに使う。 while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) {
↑mysql_fetch_array(クエリ実行結果,結果タイプ)でクエリ実行結果を 配列に格納したものを1行ずつ返す.結果タイプの
MYSQL_ASSOCは結果を連想配列として取得すること echo "<form method=\"post\"
action=\"".$SERVER ["PHP_SELF"]."\">";
echo "<tr>"; echo"<td><input type=\"submit\"
value=\"変更\" name=\"sub1\"></td>";
☆☆・valueは現在の属性ノードオブジェクトにおける属性名と属性値を返します。
echo "<td>".$row["id"]."</td>";
echo "<td>".cnv_dbstring($row["nam"], $disp_enc)."</td>";
echo "<td>".cnv_dbstring($row["pre"], $disp_enc)."</td>";
echo "<td>".$row["ag"]."</td>";
echo "</tr>"; } echo "</table>";
// 接続を解除する mysql_close($conn);
↑mysql_close(接続ID)で接続を解除 ・サーバやユーザ、パスワードでmy sqlに接続
(メッセージを表示できない場合はメッセージを出力として使う。
) ?>
</body>
</html>