1 Ubuntu php5-mysql su で root になる。 apt-get install php5-mysql cd /etc/php5/apache2 vi php.ini Extension のセクションの適当な位置に extension=mysql.so の1行を入れる。 vi を終了 (:wq) してから apache2ctl restart で apche2 を再起動。 2 php-Mysql データベースの選択、table の表示 前回に作ったデータベース mydb とテーブル friends を使う。 sql-mydb.php を以下の内容で作る。 <?php $con = mysql_connect("localhost","sato","hogehoge") or die("Mysql 接続失 敗"); echo "接続成功"; // データベースの選択 mysql_select_db("mydb",$con) or die(mysql_error()); // データの取得 $myrows = mysql_query("SELECT * FROM friends",$con); // friends のデータを 1 行ずつ表示 echo "<br>"; //改行 while($row = mysql_fetch_array($myrows)){ echo $row["id"]." "; echo $row["name"]." "; echo $row["birth"]." "; echo "<br>"; //改行 } mysql_close($con); ?> ここで、mysql_select_db はデータベース選択の関数。 mysql_query は, いろいろな sql 文をデータベースに実行することを要求するための関数。 SELECT を送ることで、その結果を変数 myrows に入れている。 mysql コマンドでは、文の終わりに; が必要だがこの関数の実行では; は付けてはいけない。 myrows には、結果リソースが入るのだが、それから1行ずつを配列として取り出す関数 が mysql_fetch_array 関数である。その添字は、カラム名と数 (0 から始まる)の両方で 参照できる。 リソースが巨大なときは、不要になったら mysql_free_result($myrows); のように解放するのが良い。 3 関数呼び出しで表示 前の例を関数呼び出しで書いてみます。 sql-func.php を以下の内容で作る。 <?php function disp_table($table,$con){ $sql="SELECT * FROM ".$table; $myrows = mysql_query($sql,$con); while($row = mysql_fetch_array($myrows)){ foreach($row as $col=>$val){ if(!is_numeric($col)) echo $col,":",$val," "; } echo "<br>"; //改行 } } ?> <?php $con = mysql_connect("localhost","sato","hogehoge") or die("Mysql 接続失 敗"); echo "接続成功"; echo "<br>"; //改行 // データベースの選択 mysql_select_db("mydb",$con) or die(mysql_error()); // データの表示 disp_table("friends",$con); ?> 関数 disp_table は任意の table に対応するように書かれています。 foreach 構文は、配列の各添字、値に対するループとして使用できる。 ここでは、添字が文字列であるとき(カラム名)にのみ値を表示しています。 もし、if 文の判定をしないと各値は2重に表示されます。 確認してみてください。 データベース接続を close していないことに注意してください。スクリプトの実行が終わ れば close は自動で行われる。 4 PHP でデータの追加 新しいデータの追加を PHP でやってみます。 まず、追加用の sql-submit.html を以下の内容で作る。 <html> <head><title>submit</title></head> <body> <table border="1"> <tr><td>データの追加</td> <td> <form action="sql-posted.php" method="POST"> <input type="text" name="new_id" value="" size="5"> <input type="text" name="new_name" value="" size="10"> <input type="text" name="new_birth" value="" size="12"> <input type="submit" name="add_data" value="add_data"> </form></td></tr> </table> </body> </html> この結果を受け取る sql-posted.php を以下の内容で作る。 <?php if($_POST["add_data"]!="add_data") die("FAILED"); $new_id=htmlspecialchars($_POST["new_id"],ENT_QUOTES); $new_name=htmlspecialchars($_POST["new_name"],ENT_QUOTES); $new_birth=htmlspecialchars($_POST["new_birth"],ENT_QUOTES); echo $new_id," ",$new_name," ",$new_birth; require("sql-func.php"); $sql="INSERT INTO friends VALUES($new_id,’$new_name’,’$new_birth’)"; mysql_query($sql,$con); disp_table("friends",$con); ?> ここで、htmlspecialchars という関数は、文字列の中に html で特別な意味をもつ文字を単 なる文字 (html にとっての)に変換する。セキュリティ上、必ずつけるようにする。 新しいデータを INSERT 文によりデータベースに追加している。 ここでは、エラーや本当に新しいかなどのチェックはしていません。 どうしたらできるでしょう?
© Copyright 2024 Paperzz