SEブログ

【PHP】PHPからMySQLへ接続する

こんにちは!

 

今回は、PHP から MySQL への接続について以下の環境で試してみました。

これで最小構成(設定)ではありますが、LAMP の環境は作れるかと思います。

 

スポンサーリンク

環境

 

 

スポンサーリンク

作業手順

 

 

1. MySQL にログインします。

[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 375
Server version: 5.6.26

 

2. MySQL のパスワードを初期値から変更していない場合はここで変更します。

ユーザーの記述が ‘ユーザー名’@’ホスト名或いは IP ’ であるところに注意します。パスワードもシングルクォーテーションで括ります。

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');
Query OK, 0 rows affected (0.00 sec)

 

3. データベースを一覧表示します

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)

 

4. test データベースへ接続します

mysql> use test;
Database changed

 

5. test データベースのテーブルを表示します。テーブルは空です。

mysql> show tables;
Empty set (0.00 sec)

 

6. test データベースにテーブルを作成します

mysql> create table test_table(col1 int(10));
Query OK, 0 rows affected (0.01 sec)

 

7. テーブルが作成されたか確認します

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| test_table |
+----------------+
1 row in set (0.00 sec)

 

8. テーブルの定義を確認します。

mysql> desc test_table;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| col1 | int(10) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

 

 

9. テーブルに 1 行入れてみます。

mysql> insert into test_table value('100');
Query OK, 1 row affected (0.00 sec)
> commit;

 

10. 1行入っていることを確認します。

mysql> select * from test_table;
+------+
| col1 |
+------+
| 100 |
+------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

 

11. これでデータベース側の準備はできました。PHP から MySQL に接続するためには mysql socket が必要になりますのでファイルの有無を確認します。

[root@localhost ~]# find / -name mysql.sock -print
/var/lib/mysql/mysql.sock

 

12. PHP から MySQL に接続できるよう、php.ini のファイルに mysql socket の場所を以下のように追記します。

以下は mysqli の場合になります。

[root@localhost ~]# vi /etc/php.ini

; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysqli.default-socket
mysqli.default_socket = /var/lib/mysql/mysql.sock

 

13. Apacheのサービスを再起動します。

[root@localhost ~]# systemctl restart httpd.service

 

14. MySQLのサービスを再起動します。

[root@localhost ~]# systemctl restart mysql.service

 

15. 接続用の phpファイルを作成します。

[root@localhost ~]# vi /var/www/html/mysqltest.php


<?php
    $hostname = "localhost";
    $username = "root";
    $password = "password";
    $dbname = "test";

    $link = mysqli_connect($hostname, $username, $password, $dbname);

    if ($link) {
        $query = "select * from test_table";
        $result = mysqli_query($link, $query);

        while($row = mysqli_fetch_array($result)){
            echo $row['col1'];
        }

    mysqli_free_result($result);
    mysqli_close($link);

    } else {
        echo 'DB connect failure';
    }
?>

15. 作成したphp にアクセスし、100 が表示されればOKです。

 

 

いかがでしょうか。

 

PHP から MySQL への接続に失敗している場合は大体 mysql socket ファイルが無いか、php.ini ファイルに mysql socket ファイルが格納されている場所(パス)が書かれていないか、どちらも問題がなければ、Apache または MySQL サービスが再起動されていないかかなと思っております。

 

では最後までお読みいただきありがとうございました!