こちら

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 文によりデータベースに追加している。
ここでは、エラーや本当に新しいかなどのチェックはしていません。
どうしたらできるでしょう?