Help us understand the problem. What is going on with this article?

PHPからmysqlの操作

More than 3 years have passed since last update.

初めに

前回の記事では centOSにmysqlをインストールしました。

今回はPHPを利用してmysqlのデータを操作したいと思います。

ステップ1→vagrantを用いたPHPの環境構築
ステップ2→centOS6.5にmysql5.6をインストールする
ステップ3(本記事)→PHPからmysqlの操作

前提条件

  • 前回の記事を読んでいる
  • centOSにmysql,PHP,Apacheをインストール済み

開発環境

  • OS X Yosemite
  • Windowsでも動作確認済み

1.開発環境構築

まず、PHPでmysqlを扱うためphp-mysqlをインストールします。
centOSにログインして、下記コマンドを打ってインストールします。

$ sudo yum install php-mysql

2.mysqlにデータの挿入

次にmysqlにDBを作成し、テーブルを作りデータを挿入していきます。
mysql起動してない場合は起動してログインします。

$ sudo /etc/init.d/mysqld start

で、起動。

$ sudo mysql -uroot -p

でログインします。

ログインしたらまず、データベースを作成します。

$ mysql> create database NAME;

NAME -> データベースの名前

(例)

$ mysql> create database testdb;

Query OK, 1 row affected (0.00 sec)

と表示されたら成功です。
データベースを作成したら、作成したデータベースを利用することを宣言します。

$ mysql> use NAME;

NAME -> データベースの名前

(例)

$ mysql> use testdb;

Database changed

と表示されたら成功です。

次にデータベースにテーブルを作成します。
今回はidとnameを持ったtest_tableを作成します。

$ mysql> create table test_table(id int(11),name varchar(255));

Query OK, 0 rows affected (0.02 sec)

と表示されたら成功です。
つぎにデータをテーブルに挿入します。

$ mysql> insert into test_table values(1,'testname');

Query OK, 1 row affected (0.00 sec)

と表示されたら成功です。挿入されたデータを確認します。

$ mysql> select * from test_table;

+------+------------+
| id | name |
+------+------------+
| 1 | testname |
+------+------------+
1 rows in set (0.00 sec)

と表示されると思います。

3.PHPからmysqlの操作

次にPHPで作ったテーブルの情報を取得したいと思います。
mysqlからログアウトし、/vagrant/htmlに移動します。

$ mysql> exit
$ cd /vagrant/html

次にmysql_sample.phpを作成します。

mysql_sample.php
<?php
    //mysqlに接続
    $link = mysql_connect('localhost','root','pass');
    //DBの選択
    $db_selected = mysql_select_db('testdb',$link);
    //SQL文の発行
    $result = mysql_query('select * from test_table');
    //結果を連想配列に変換
    $row = mysql_fetch_assoc($result);
    //表示
    var_dump($row);
    //close処理
    $close_flag = mysql_close($link);
?>
$link = mysql_connect('localhost','root','pass');

pass -> は自分が設定したパスワードを入力してください。

mysql_sample.phpを作成したら

$ php mysql_sample.php

でPHPファイルを実行します。


array(2) {
  ["id"]=>
  string(1) "1"
  ["name"]=>
  string(5) "testname"
}

先ほどテーブルに挿入した情報が表示されたら成功です。

4.ブラウザで確認

次にブラウザでデータを確認したいと思います。
まずmysql.sockの設定をします。

$ mysql_config --socket

/var/lib/mysql/mysql.sock

でmysql.sockの場所を確認します。
次に、php.iniにmysql.sockの追記をします。

$ sudo vi /etc/php.ini

mysql.default_scoketで検索をすると1100行目あたりに

mysql.default_scoket =

と記述されているので、mysql.sockの場所を追記します。

追記後

mysql.default_scoket = /var/lib/mysql/mysql.sock

これで設定は終わりです。/vagrant/htmlに移動してmysql_sample2.phpを作成して
ブラウザから確認します。

$ cd /vagrant/html
$ vi mysql_sample2.php
mysql_sample2.php
<html>
<body>
<?php
    $link = mysql_connect('localhost','root','pass');
    $db_selected = mysql_select_db('testdb',$link);
    $result = mysql_query('select * from test_table');
    $row = mysql_fetch_assoc($result);
    echo '<pre>';
    var_dump($row);
    echo '</pre>';
    $close_flag = mysql_close($link);
?>
</body>
</html>

先ほどのmysql_sample.phpにhtmlタグとbodyタグを追加し、
整形して表示するためpreタグで囲います。

Apacheを立ち上げ、192.168.33.10/mysql2_sample.php
にアクセスしてみましょう。

array(2) {
  ["id"]=>
  string(1) "1"
  ["name"]=>
  string(5) "testname"
}

ブラウザからテーブルの値を確認できると思います。

5.終わりに

以上でPHPからのmysqlの操作の記事は終わりです。
これでLAMPの環境が揃ったので、好きなだけ開発ができます。
次回の記事は未定になります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away