LoginSignup
1
3

More than 3 years have passed since last update.

laravelでPHPのPDO接続を使用してmysqlに接続する方法

Last updated at Posted at 2020-01-15

laravelの設定ではSQliteを使用していますが、別途PDOを使用してmysqlからデータを引っ張りたいと思った時にDBの接続って2つ使えるの?という疑問があったので解消してみました。

やったこと

blade.phpにphpタグを使いPDO接続

それに必要なもの

  • サーバーの立ち上げ
  • DB作成または既存のDB
  • 上記のDBにテーブル作成

laravelサーバー立ち上げ

$pwd
/home/vagrant/laravel_lessons_copy/プロジェクト名

その後、

$ php artisan serve --host 192.168.33.10 --port 8000

でサーバー立ち上げで接続
 

DBを確認

※現在のプロジェクト名の位置でmysql -u rootでログイン

mysql> show databases;

スクリーンショット 2020-01-01 18.18.04.png

からuse DB名でDBを選択

use mysql

その後、table作成

index.blade.phpにPDO接続

index.blade.php


<?PHP
$pdo=new PDO('mysql:host=localhost;dbname=mysql;charset=utf8', 'root', '');

foreach ($pdo->query('select * from user') as $row){
  echo $row['id'];
  echo $row['name'];
  echo $row['address'];
}
?>

.envとdatabase.phpは何も触ってないけど一応添付しておきます。
今回PDOでmysql接続したいが、.envの設定はsqliteになっていても大丈夫です。

.env


DB_CONNECTION=sqlite

#DB_CONNECTION=mysql
#DB_HOST=127.0.0.1
#DB_PORT=3306
#DB_DATABASE=dotinstall_todo_app  //laravel上でのmysqlのDB
#DB_USERNAME=root  //mysql -u rootでログインしたから
#DB_PASSWORD=      //上記のログインに際passwordは設定してないから空白 
database.php


'default' => env('DB_CONNECTION', 'mysql'),

'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DATABASE_URL'),
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
        ],

        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3