Symfoware

Symfowareについての考察blog

FreeBSD 11.0 + CodeIgniter 3でMariaDBに接続

FreeBSD 11.0にPHP7とMariaDB 10.1をインストールしました。

FreeBSD 11 nginx + php7-fpmの動作環境構築(pkg使用)
FreeBSD 11.0にMariaDB 10.1をインストールし外部接続を許可する(pkg使用)


php7からMariaDBへの接続を試してみます。
フレームワークとして、CodeIgniterを使用しました。



ライブラリのインストール



phpからはmysqliを使用して接続しようと思います。
pkgコマンドで、php70-mysqliをインストール。


# pkg install php70-mysqli




これだけで大丈夫だろうと思っていたら、接続時にこんなエラーが発生しました。


An uncaught Exception was encountered

Type:        Error
Message:     Call to undefined function ctype_digit()
Filename:    /var/dev/php/ci3/system/database/DB_driver.php
Line Number: 1404




http://php.net/manual/ja/function.ctype-digit.php

ctypeライブラリが追加で必要な模様。


# pkg install php70-ctype




これでエラーはなくなります。




CodeIgniter



登録、検索のテスト用に「test」データベースを作成。
sampleテーブルを作成しておきます。


  1. create table sample(
  2. id int,
  3. val varchar(100)
  4. );




ローカルのtestデータベースに
id:admin
pass:P@ssw0rd
で接続します。

データベース接続の設定ファイル
application/config/database.php
はこうなりました。


  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. $active_group = 'default';
  4. $query_builder = TRUE;
  5. $db['default'] = array(
  6.     'dsn'    => '',
  7.     'hostname' => 'localhost',
  8.     'username' => 'admin',
  9.     'password' => 'P@ssw0rd',
  10.     'database' => 'test',
  11.     'dbdriver' => 'mysqli',
  12.     'dbprefix' => '',
  13.     'pconnect' => FALSE,
  14.     'db_debug' => (ENVIRONMENT !== 'production'),
  15.     'cache_on' => FALSE,
  16.     'cachedir' => '',
  17.     'char_set' => 'utf8',
  18.     'dbcollat' => 'utf8_general_ci',
  19.     'swap_pre' => '',
  20.     'encrypt' => FALSE,
  21.     'compress' => FALSE,
  22.     'stricton' => FALSE,
  23.     'failover' => array(),
  24.     'save_queries' => TRUE
  25. );





サンプルのコントローラー。


  1. <?php
  2. class Sample extends CI_Controller {
  3.     public function index() {
  4.         $this->load->database();
  5.         
  6.         $this->db->empty_table('sample');
  7.         
  8.         $this->db->insert('sample', ['id' => 1, 'val' => 'テスト1']);
  9.         $this->db->insert('sample', ['id' => 2, 'val' => 'テスト2']);
  10.         
  11.         $rows = $this->db->get('sample')->result_array();
  12.         foreach($rows as $row) {
  13.             echo 'id:' . $row['id'] . ',val:' . $row['val'] . PHP_EOL;
  14.         }
  15.         
  16.     }
  17. }




実行してみると...


# php index.php sample
id:1,val:テスト1
id:2,val:テスト2




ちゃんとデータの登録・取得が行えているようです。

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/03/20(月) 19:03:00|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<PythonからMariaDB(MySQL)に接続する(mysql-connector-python) | ホーム | FreeBSD 11.0にMariaDB 10.1をインストールし外部接続を許可する(pkg使用)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1966-42f31d7f
この記事にトラックバックする(FC2ブログユーザー)