PHP5(Windows)の設定
データベースアクセスの簡単な例
mysql_connect(MySQLに接続)
mysql_select_db(データベースを選択)
mysql_query(クエリの送信)
mysql_num_rows(結果セットから行の数を調べる)
mysql_fetch_array(結果の行を取得して内部ポインタを次の行に進める)
PHP4ではデフォルトでMySQLを使えるようになっていましたが、PHP5では拡張機能を有効にしなければ(デフォルトでは)PHPからMySQLを使うことができません、MySQLを有効にするには、php.iniの設定を以下のように修正する必要があります。
extension_dirのPHP5のext/フォルダへのパスを設定します。デフォルトでは"./"に設定されていると思いますが、これではext/フォルダを参照できません。PHP5をc:\php5にインストールした場合、以下のように修正します。
extension_dir = "C:\php5\ext"
デフォルトでは、php_mysql.dllとphp_mysqli.dllの設定は無効(コメントアウト)になっていますので、行頭の「;」を削除して有効にします。
extension=php_mysql.dll
extension=php_mysqli.dll
さらにシステムがlibmysql.dllを見つけることができるようにします。システムフォルダーにコピーするという方法もありますが、この方法は推奨されないようです。代わりに、libmysql.dllへのパスを環境変数PATHに追加する方法が望ましいと思います。
以下はMySQLにログインして、データベース books を選択、テーブル bookstbl の全レコードの id フィールドの値を表示するPHPスクリプトの例です。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<?php
$hostName = "localhost";
$userName = "root";
$password = "password";
$db = mysql_connect( $hostName, $userName, $password );
mysql_select_db( 'books' );
$sql = "select * from bookstbl";
$result = mysql_query( $sql );
$num_rows = mysql_num_rows( $result );
if( $num_rows == 0 )
{
echo "<p>データがありません";
}
else
{
while ( $row = mysql_fetch_array( $result ) )
{
echo "<p>";
echo $row{ "id" };
}
}
?>
</body>
</html>
PHPからMySQLで管理しているデータベースにアクセスするには、まずMySQLに接続(ログイン)する必要があります。以下はMySQLにログインして、データベース books を選択、テーブル bookstbl の全レコードの id フィールドの値を表示するPHPスクリプトの例です。それには、mysql_connect関数を使います。
mysql_connect( host_name, user_name, password );
使用例
$hostName = "localhost";
$userName = "root";
$password = "password";
$db = mysql_connect( $hostName, $userName, $password );
基本的な使い方では、パラメータにログインするユーザーのホスト名、ユーザー名、パスワードを指定します。この関数はMySQL リンクID を返します(失敗した場合はfalseを返す)。
mysql_select_db関数はMySQLのUSE構文に相当する関数で、操作対象のデータベースを選択します。
mysql_select_db( database_name );
使用例
mysql_select_db( 'books' );
この関数は成功または失敗をブール値で返します。
mysql_query関数はMySQLのクエリを送信するために用いられます。
mysql_query( query );
パラメータqueryは文字列型で、最後はセミコロンで終わらなければなりません。この関数は複数のクエリを送信することはできません。
使用例
$sql = "select * from bookstbl";
$result = mysql_query( $sql );
この関数の値はクエリの内容によって異なります。失敗するとfalseを返します。
SELECT, SHOWなどの結果(結果セットと言います)を返す必要のあるクエリではPHPリソースを返します。返されたPHPリソースにアクセスするためには、PHPリソースを関連関数に渡します。たとえば、以下のような関数を使います。
mysql_num_rows関数 | SELECT文を含むクエリによって返された行の数を調べる |
mysql_affected_rows関数 | DELETE, INSERTなどのクエリで変更された行の数を調べる |
それ以外のINSERT, UPDATE, DELETEなどの結果セットを返さないクエリでは、trueまたはfalseのみを返します。
mysql_num_rows関数はmysql_query関数の返した結果セットから行数を調べるために用いられます。この関数は成功すると行数を返し、失敗するとfalseを返します。
mysql_num_rows ( result );
使用例
mysql_select_db( 'books' );
$sql = "select * from bookstbl";
$result = mysql_query( $sql );
$num_rows = mysql_num_rows( $result );
mysql_fetch_array関数は、結果の行を連想配列や添字配列で返し(取得)、内部ポインタを次の行に進めます。行が存在しない場合はfalseを返します。
mysql_fetch_array ( result [, result_type );
resultにはmysql_query関数から返された結果セット(resource型)を指定します。
result_typeはmysql_fetch_array関数の返す値の型を指定するために用いられます(省略可能)。result_typeには以下の値を指定することができます。
MYSQL_BOTH | | 連想配列と添字配列の両方が取得されます(result_typeオプション省略時の動作) |
MYSQL_ASSOC | | 連想配列のみが取得されます(mysql_fetch_assoc関数と同等の動作) |
MYSQL_NUM | | 添字配列のみが取得されます(mysql_fetch_row関数と同等の動作) |
使用例
$sql = "select * from bookstbl";
$result = mysql_query( $sql );
$num_rows = mysql_num_rows( $result );
if( $num_rows == 0 )
{
echo "<p>データがありません";
}
else
{
while ( $row = mysql_fetch_array( $result ) )
{
echo "<p>";
echo $row{ "id" };
}
}