「PHPとデータベース - MySQL」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
5行目: 5行目:
== MySQLの接続・切断 ==
== MySQLの接続・切断 ==
==== MySQLの接続 ====
==== MySQLの接続 ====
MySQLへ接続するには、<code>mysql_connect</code>関数を使用する。<br>
MySQLへ接続するには、<code>mysqli_connect</code>関数を使用する。<br>
<br>
<br>
  resource mysql_connect([string server [, string username [, string password [, bool new_link [, int client_flags]]]]])
  resource mysqli_connect(string host, string username, string passwd, string dbname [, int port [, string socket ]])
   
   
  MySQLサーバへ接続または再利用する。
  MySQLサーバへ接続または再利用する。
   
   
  引数:
  引数:
     server 接続先のMySQLサーバ。
     host 接続先のMySQLサーバを指定する。
            <ホスト名またはIPアドレス>:<ポート番号>のように、ポート番号を指定することが可能であり、
          <ホスト名またはIPアドレス>:<ポート番号>のように、ポート番号を指定することが可能であり、
            ホスト名またはIPアドレスでは、:/path/to/socketのようにソケットへのパスを指定することも可能である。
          ホスト名またはIPアドレスでは、:/path/to/socketのようにソケットへのパスを指定することも可能である。
            <ホスト名またはIPアドレス>または<ホスト名またはIPアドレス>:<ポート番号>を指定する場合、
            MySQLクライアントライブラリはそれをオーバーライドして、ローカルソケット(Windowsでは名前付きパイプ)に接続する。
          <ホスト名またはIPアドレス>または<ホスト名またはIPアドレス>:<ポート番号>を指定する場合、
          MySQLクライアントライブラリはそれをオーバーライドして、ローカルソケット(Windowsでは名前付きパイプ)に接続する。
   
   
     username  ユーザ名
     username  ユーザ名
22行目: 23行目:
     password  パスワード
     password  パスワード
   
   
     new_link 例えば、同じ引数で2度mysql_connect関数を実行する場合、
     dbname 接続するデータベース名を指定する。
              2度目は新規のリンクが確立されるのではなく、代わりに既に接続しているリンクのリンクIDを返す。
              new_linkはこの動作を変更して、既にmysql_connect関数が同じ引数で実行されている場合でも、常に新規のリンクを開く。
   
   
     client_flags 圧縮プロトコルやSSL暗号化(Windows版は未対応)等の引数の指定
     port 接続するMySQLサーバーのポート番号を指定する。
    socket  使用するソケットを指定する。
   
   
  戻り値:
  戻り値:
     成功する場合はMySQLのリンクID、失敗する場合はfalseを返す。
     MySQLサーバへの接続オブジェクトを返す。
<br>
<br>
以下の例では、MySQLサーバへ接続している。<br>
以下の例では、MySQLサーバへ接続している。<br>
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
  $link = mysql_connect('localhost', 'user', 'pass');         // ホスト名のみ
  <?php
$link = mysql_connect('example.com:3307', 'user', 'pass')// ホスト名とポート番号
    // データベースへの接続に必要な変数を指定
$link = mysql_connect('127.0.0.1:3307', 'user', 'pass');   // IPアドレスとポート番号
    $host = 'localhost'; // 以下の指定方法も可能
$link = mysql_connect('/tmp/mysql', 'user', 'pass');       // ソケットのみ
                          // localhost:3307(ホスト名とポート番号)
                          // 127.0.0.1:3307(IPアドレスとポート番号)
                          // /tmp/mysql(ソケットのみ)
    $username = 'root';
    $passwd = 'root';
    $dbname = 'mydb';
    // データベースへ接続
    $link = mysqli_connect($host, $username, $passwd, $dbname);
    // 接続チェック
    if(!$link)
    {
      die('データベースの接続に失敗しました。');
    }
    echo "データベースの接続に成功しました! \n";
    // データベースの接続を閉じる
    mysqli_close($link);
?>
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>


==== MySQLの切断 ====
==== MySQLの切断 ====
MySQLへの接続を切断するには、<code>mysql_close</code>関数を使用する。<br>
MySQLへの接続を切断するには、<code>mysqli_close</code>関数を使用する。<br>
<br>
<br>
  bool mysql_close([resource link_identifier])
  bool mysqli_close(mysqli link_identifier])
   
   
  link_identifierが指すMySQLへの非持続的リンクを閉じる。
  link_identifierが指すMySQLへの非持続的リンクを閉じる。
51行目: 72行目:
   
   
  引数:
  引数:
     link_identifier  MySQLのリンクID
     link_identifier  mysqli_connect関数の戻り値のリンクIDを指定する。
   
   
  戻り値:
  戻り値:
     成功する場合はtrue、失敗する場合はfalseを返す。
     MySQLの切断に成功する場合はtrue、失敗する場合はfalseを返す。
<br>
<br>
以下の例では、MySQLへの接続を明示的に切断している。<br>
以下の例では、MySQLへの接続を明示的に切断している。<br>
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
  $link = mysql_connect('localhost', 'user', 'pass');
  $host = 'localhost';
$username = 'root';
$passwd = 'root';
$dbname = 'mydb';
// データベースへ接続
$link = mysqli_connect($host, $username, $passwd, $dbname);
   
   
  // ...MySQLのCRUD処理
  // ...MySQLのCRUD処理
   
   
  mysql_close($link);
  mysqli_close($link);
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>


==== エラー処理 ====
==== エラー処理 ====
MySQLに対する処理でエラーが発生する場合、<code>mysql_error</code>関数を使用して、エラーメッセージを取得することができる。<br>
MySQLに対する処理でエラーが発生する場合、<code>mysqli_error</code>関数を使用して、エラーメッセージを取得することができる。<br>
<br>
<br>
  string mysql_error([resource link_identifier])
  string mysqli_error(mysqli link_identifier])
   
   
  直近のMySQL関数からのエラー文字列を返す。
  直近のMySQL関数からのエラー文字列を返す。
  MySQLのバックエンドのエラーは警告が発生しないため、 代わりに、mysql_error関数を使用してエラー文字列を取得する。
  MySQLのバックエンドのエラーは警告が発生しないため、 代わりに、mysqli_error関数を使用してエラー文字列を取得する。
   
   
  引数:
  引数:
78行目: 105行目:
   
   
  戻り値:
  戻り値:
     直近のMySQL関数からのエラー文字列を返します。エラーが発生していない場合は、空文字列を返す。
     直近のMySQL関数からのエラー文字列を返す。
    エラーが発生していない場合は、空文字列を返す。
<br>
<br>
以下の例では、mysql_connect関数でエラーが発生した場合にエラーメッセージを取得している。<br>
以下の例では、mysqli_connect関数でエラーが発生した場合にエラーメッセージを取得している。<br>
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
  $link = mysql_connect('localhost', 'user', 'pass');
  $host = 'localhost';
$username = 'root';
$passwd = 'root';
$dbname = 'mydb';
// データベースへ接続
$link = mysqli_connect($host, $username, $passwd, $dbname);
  if(!$link)
  if(!$link)
  {
  {
     print(mysql_error());
     print(mysqli_error());
  }
  }
   
   
  // ...MySQLに対するCRUD処理
  // ...MySQLに対するCRUD処理
   
   
  mysql_close($link);
  mysqli_close($link);
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
97行目: 132行目:
exit関数およびdie関数の詳細は、[[PHPの基礎 - PHPの終了処理]]を参照すること。<br>
exit関数およびdie関数の詳細は、[[PHPの基礎 - PHPの終了処理]]を参照すること。<br>
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
  $link = mysql_connect('localhost', 'user', 'pass');
  $host = 'localhost';
$username = 'root';
$passwd = 'root';
$dbname = 'mydb';
// データベースへ接続
$link = mysqli_connect($host, $username, $passwd, $dbname);
  if(!$link)
  if(!$link)
  {
  {
     die('接続失敗です。'.mysql_error());
     die('接続失敗です。'.mysqli_error());
  }
  }
   
   
  // ...MySQLに対するCRUD処理
  // ...MySQLに対するCRUD処理
   
   
  mysql_close($link);
  mysqli_close($link);
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
111行目: 153行目:
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
  <?php
  <?php
     $link = mysql_connect('localhost', 'testuser', 'testuser');
     $host = 'localhost';
    $username = 'root';
    $passwd = 'root';
    $dbname = 'mydb';
    // データベースへ接続
    $link = mysqli_connect($host, $username, $passwd, $dbname);
     if(!$link)
     if(!$link)
     {
     {
       die('接続失敗です。'.mysql_error());
       die('接続失敗です。'.mysqli_error());
     }
     }
   
   
121行目: 169行目:
     // ...MySQLに対するCRUD処理
     // ...MySQLに対するCRUD処理
   
   
     $close_flag = mysql_close($link);
     $close_flag = mysqli_close($link);
   
   
     if($close_flag)
     if($close_flag)

案内メニュー