読者です 読者をやめる 読者になる 読者になる

リスを倒す 『初めてのPHP,MySQL,JavaScript&CSS』

『初めてのPHP,MySQL,JavaScript&CSS』勉強奮闘記

10-1. PHPを使ったMySQLへのアクセス

10章では、今まで勉強してきたMySQLPHP両方使います。
PHPのビルドイン関数を使ってMySQLにアクセスすることで2つを結合する方法をみていきます。


PHPMySQLへのインターフェイスとして使用することで、ある形式で作成したSQLクエリの結果をwebページでみることができます。

1-1. PHPからMySQLを使用する手順


MySQLPHPから次の手順で使用します。
それぞれの詳細は次章から追って説明します。
①ログインファイルを作成する
MySQLに接続する
③使用するデータベースを作成する
④クエリストリングを作成、実行する
⑤結果を取得し、webページに出力する
MySQLへの接続を解除する


1-2. ログインファイルを作成する


PHPを使って開発されるほとんどのwebサイトには、MySQLへのアクセスが必要な複数のプログラムファイルが含まれているので、ログインとパスワードに関する詳細な情報が必要になります。
これらを保持する単一ファイルを作成し、必要な場所でそれを読み込むのが実用的です。

以下、login.phpファイルを作成します。

<?php // login.php
$db_hostname = 'localhost';
$db_database = 'publications';
$db_username = 'username';
$db_password = 'password';
?>

usernameとpasswordはデータベースで使用する実際の値に置き換えます。


1-3. MySQLに接続する


login.phpファイルを保存したら、データベースにアクセスする必要のあるPHPファイルにはrequire_onceステートメントを使ってlogin.phpファイルを読み込むことができます。
require_onceはファイルが存在しない場合、"Fatal Error"を生成するので、includeステートメントを使うよりも便利です。
また、対象ファイルは1度も読み込んでいないときのみ読み取られるという意味もあるんで、ディスクへの重複した無駄なアクセスを避けることができます。

<?php
require_once 'login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());
?>
?>

1-4. 使用するデータベースを作成する


データベースを選択するコマンドはmysql_select_dbです。
このコマンドには、使用するデータベースの名前お、接続したサーバー(リンクID)を渡します。

<?php
mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());
?>
?>

1-5. クエリストリングを作成、実行する


PHPからMySQLへのクエリの送信はmysql_query関数を使って発行します。


<?php
$query = "SELECT * FROM classics";
$result = mysql_query($query);

if (!$result) die ("Database access failed: " . mysql_error());
?>

1-6. 結果を取得し、webページに出力する


mysql_query関数が返すリソースが得られたら、それを使って希望するデータが取得できます。
<?php
';
echo 'Title: ' . mysql_result($result,$j,'title') . '
';
echo 'Category: ' . mysql_result($result,$j,'category') . '
';
echo 'Year: ' . mysql_result($result,$j,'year') . '
';
echo 'ISBN: ' . mysql_result($result,$j,'isbn') . '

';
}
?>

1-7. MySQLへの接続を解除する


データベースの使用が終わったら、接続は閉じます。
そのさいは以下のコマンドを使います。

<?php
mysql_close($db_server);
?>

いじょう。