HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2017/08/11

Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法 Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法

(Raspberry Piの Webサーバに PHP MySQL PDOを入れて PHP CGIから MySQLを操作する方法)

Tags: [Raspberry Pi], [電子工作]





● Raspberry Pi 3 Model Bを遂に購入

 Raspberry Pi3 Model B RPI2 RPI3

 大人気の CPUボードの Raspberry Piに WiFiと Bluetoothが搭載されたモデルが新発売となりました。
 以前から Raspberry Pi 2を買おうかどうか迷っていましたが、Raspberry Pi 3 Model Bの発売を機に購入を決意してラズベリアンになる事にしました。

 ※ ラズパイの OS Raspbianはバージョンが上がる毎に過去の版と OSの内部の作りが変わり、過去に書かれた製作記事(例えば Raspbian Wheezyの時代の記事)がそのままではエラーが出たりして動かない事が有ります。
 ※ 当方のホームページのラズパイ記事は全て Raspberry Pi 3 Model Bと Raspbian Jessieの組み合わせで動作確認をしております。
(ただし、将来的に新しい Raspbian OSが出た場合に、当方の Raspbian Jessieを基にした内容がそのままでは動かない可能性が有ります。)
 ※ 2017/08/16から Raspbian OSは Raspbian Jessieから Raspbian Stretchに変わりました。
 ※ 2019/06/20から Raspbian OSは Raspbian Stretchから Raspbian Busterに変わりました。

Download Raspbian for Raspberry Pi

ちなみに、歴代のバージョンと名称は
Debianコードネーム年月備考(参考)Ubuntuでの該当名称
Debian 11Bullseye2021/08/14~2021/11からラズパイにリリースFocal Fossa 20.04 LTS ?
Debian 10Buster2019/06/20~2019/06からラズパイ4対応Bionic 18.04 LTS
Debian 9Stretch2017/08/16~2018/03からラズパイ3B+対応Xenial 16.04 LTS
Debian 8Jessie2015~2016/02からラズパイ3対応Trusty 14.04 LTS
Debian 7Wheezy2013~2016
Debian 6.0Squeeze2011~2014
Debian GNU/Linux 5.0Lenny2009~2012


●ラズパイで Webサーバを構築する方法

 使用した Raspbian OSのバージョン
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.1 (stretch)
Release:        9.1
Codename:       stretch


●おまけ: 軽量な Webサーバ Lighttpdをラズパイにインストールする方法

 下記にまとめました。

2017/08/11
Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法
Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法

  ラズパイで Webサービスを動かす、Lighttpd + PHP + Perl + Python + Ruby CGIの LLMP stackを構築


●おまけ: Apache2 Webサーバをラズパイにインストールする方法

 下記にまとめました。

2017/08/11
Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法
Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法

  ラズパイで一般的な Webサービスを動かす場合に必要なアプリが入った LAMP stackを構築


●おまけ: 軽量な Webサーバ nginxをラズパイにインストールする方法

 下記にまとめました。

2017/08/11
Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法
Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法

  ラズパイで Webサービス LEMP Stackを構築、nginx + PHP + Perl(UNIXドメインソケット方式)


● nginxで MySQLと PHP PDOをインストール

 あらかじめ Webサーバと PHPを使える様に設定しておきます。

 php-mysqlと mysql-serverをインストールする。
# pdo_mysql PDO Driver for MySQL enabled
# Client API version mysqlnd 5.0.12-dev - 20150407
sudo apt-get -y install php-mysql

 Webサーバを再起動します。
# restart Apache2 Web server service
sudo service apache2 restart
# restart nginx Web server service
sudo service nginx restart
# restart Lighttpd Web server service
sudo service lighttpd restart

 mysql-server本体をインストールします。
# MySQL MariaDB Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0
sudo apt-get -y install mysql-server


● PHPの PDOのインストール状態を phpinfoで確認する。

# おなじみの phpinfoの PHPサンプルです。
sudo nano /var/www/html/phpinfo.php

<?php phpinfo(); ?>

 パソコンでブラウザを開いて、URL欄に下記を入力します。
http://{ラズパイの IPアドレス}/phpinfo.php

・PHPを Webサーバで実行する。PHP編
PHPを Webサーバで実行する。PHP編
 ・PDO - PDO support - PDO drivers - mysql, sqlite
 ・pdo_mysql - PDO Driver mysqlnd 5.0.12-dev - 20150407



● PHPの PDOで MySQLを操作する方法

 MySQLにユーザーを登録する
MySQL Username: hoge_user
MySQL Password: hoge_pass
MySQL Database: HOGE_DB
User Privileges: GRANT ALL PRIVILEGES
# sudoで rootユーザーで mysqlにログインする
$ sudo mysql -u root
# Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0

# hoge_userを作成する
MariaDB [(none)]> CREATE USER hoge_user;

# CREATE USER hoge_user IDENTIFIED BY [PASSWORD] 'hoge_pass';
# はエラーになります。

# hoge_userのパスワード hoge_passを設定する
MariaDB [(none)]> SET PASSWORD FOR 'hoge_user'=password('hoge_pass');

# 作成したユーザー情報を確認する
MariaDB [(none)]> SELECT user,host,password FROM mysql.user;
# +-----------+-----------+-------------------------------------------+
# | user      | host      | password                                  |
# +-----------+-----------+-------------------------------------------+
# | root      | localhost |                                           |
# | hoge_user | %         | *1234567890123456789012345678901234567890 |
# +-----------+-----------+-------------------------------------------+

# hoge_userにデータベース HOGE_DBに対する全ての権限を付与する
# ALL PRIVILEGES
MariaDB [(none)]> GRANT ALL PRIVILEGES ON `HOGE_DB`.* TO 'hoge_user'  IDENTIFIED BY 'hoge_pass';

# hoge_userにデータベース HOGE_DBを操作するだけの権限を付与する
# operate TABLE only
# MariaDB [(none)]> GRANT select,update,insert,delete ON `HOGE_DB`.* TO 'hoge_user' IDENTIFIED BY 'hoge_pass';

# hoge_userの権限を確認する
MariaDB [(none)]> SHOW GRANTS FOR 'hoge_user';

# hoge_userを削除する
# MariaDB [(none)]> drop user 'hoge_user'@'%';

● PHPの MySQL PDOのサンプルプログラム。
# http://{serverip}/hoge_pdo.php
sudo nano /var/www/html/hoge_pdo.php
<?php
$servername = "localhost";
$username = "hoge_user";
$password = "hoge_pass";

try {

    echo "==== PDO<br>";
    $pdo = new PDO("mysql:host=$servername", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "PDO successfully<br><br>";

    echo "==== CREATE DATABASE<br>";
    $sql = "CREATE DATABASE IF NOT EXISTS HOGE_DB";
    $pdo->exec($sql);
    echo "CREATE DATABASE successfully<br><br>";

    echo "==== use DB<br>";
    $sql = "use HOGE_DB";
    $pdo->exec($sql);
    echo "use DATABASE successfully<br><br>";

    echo "==== CREATE TABLE<br>";
    $sql = "CREATE TABLE IF NOT EXISTS HOGE_TABLE (
                HOGE_ID int(11) AUTO_INCREMENT PRIMARY KEY,
                HOGE_TEXT varchar(32) NOT NULL)";
    $pdo->exec($sql);
    echo "CREATE TABLE successfully<br><br>";


    echo "==== SELECT<br>";
    $sql = "SELECT * FROM HOGE_TABLE";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
        print($result['HOGE_ID']);
        print($result['HOGE_TEXT'].'<br>');
    }
    echo "SELECT successfully<br><br>";


    echo "==== DELETE<br>";
    $sql = "DELETE FROM HOGE_TABLE WHERE HOGE_ID = :id";
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':id', 3, PDO::PARAM_INT);
    $stmt->execute();
    echo "DELETE successfully<br><br>";

    $sql = "DELETE FROM HOGE_TABLE WHERE HOGE_ID = :id";
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':id', 5, PDO::PARAM_INT);
    $stmt->execute();
    echo "DELETE successfully<br><br>";

    echo "==== SELECT<br>";
    $sql = "SELECT * FROM HOGE_TABLE";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
        print($result['HOGE_ID']);
        print($result['HOGE_TEXT'].'<br>');
    }
    echo "SELECT successfully<br><br>";

    echo "==== INSERT 1<br>";
    $sql = "INSERT INTO HOGE_TABLE (HOGE_ID, HOGE_TEXT) VALUES (:ID, :TEXT)";
    $stmt = $pdo -> prepare($sql);
    $id_val = 5;
    $hoge_text_val = "HOGE_VAL_5";
    $stmt->bindParam(':ID', $id_val, PDO::PARAM_INT);
    $stmt->bindParam(':TEXT', $hoge_text_val, PDO::PARAM_STR);
    $stmt->execute();
    echo "INSERT INTO 1 successfully<br><br>";

    echo "==== INSERT 2<br>";
    $stmt = $pdo -> prepare($sql);
    $stmt->bindValue(':ID', 3, PDO::PARAM_INT);
    $stmt->bindValue(':TEXT', "HOGE_PDO_3", PDO::PARAM_STR);
    $stmt->execute();
    echo "INSERT INTO 2 successfully<br><br>";


    echo "==== SELECT<br>";
    $sql = "SELECT * FROM HOGE_TABLE";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
        print($result['HOGE_ID']);
        print($result['HOGE_TEXT'].'<br>');
    }
    echo "SELECT successfully<br><br>";

}
catch(PDOException $e)
{
    echo $sql . "<br>" . $e->getMessage();
}

$pdo = null;
?>

● http://{serverip}/hoge_pdo.php
==== PDO
PDO successfully

==== CREATE DATABASE
CREATE DATABASE successfully

==== use DB
use DATABASE successfully

==== CREATE TABLE
CREATE TABLE successfully

==== SELECT
3HOGE_PDO_3
5HOGE_VAL_5
SELECT successfully

==== DELETE
DELETE successfully

DELETE successfully

==== SELECT
SELECT successfully

==== INSERT 1
INSERT INTO 1 successfully

==== INSERT 2
INSERT INTO 2 successfully

==== SELECT
3HOGE_PDO_3
5HOGE_VAL_5
SELECT successfully



Tags: [Raspberry Pi], [電子工作]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

Raspberry Piで Googleの Go言語 + Gin Webフレームワークをインストールして Webアプリを作る
Raspberry Piで Googleの Go言語 + Gin Webフレームワークをインストールして Webアプリを作る

  Raspberry Piで Googleの Go言語 + Gin Webフレームワークをインストールして Webアプリを作る

Raspberry Piで WebAPIモックサーバー JSON Serverを動かしてみるテスト
Raspberry Piで WebAPIモックサーバー JSON Serverを動かしてみるテスト

  Raspberry Piで APIモックサーバー JSON Serverを動かしてみるテスト

Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法
Raspberry Piに LAMP構成の Apache MySQL PHP Perl phpMyAdminの Webサーバを構築する方法

  ラズパイで一般的な Webサービスを動かす場合に必要なアプリが入った LAMP stackを構築

Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法
Raspberry Piに LLMP Lighttpd + MySQL + PHP + Perl 構成の Webサーバを構築する方法

  ラズパイで Webサービスを動かす、Lighttpd + PHP + Perl + Python + Ruby CGIの LLMP stackを構築

Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法
Raspberry Piに nginx + MySQL + PHP + Perl 構成の LEMP Webサーバを構築する方法

  ラズパイで Webサービス LEMP Stackを構築、nginx + PHP + Perl(UNIXドメインソケット方式)

Raspberry Pi 3 Model Bで CMSフレームワーク WordPressをセットアップする方法
Raspberry Pi 3 Model Bで CMSフレームワーク WordPressをセットアップする方法

  ラズパイ3で WordPressをインストールする方法

Raspberry Pi3を Gitサーバとして設定する方法、Git単体と GitLabを使用する方法
Raspberry Pi3を Gitサーバとして設定する方法、Git単体と GitLabを使用する方法

  ラズパイ3でローカルの Gitサーバを動かす方法。GitLabをインストールする方法

Raspberry Pi3に Postfixメールサーバーを Gmailの SMTPをリレーとして立てる方法
Raspberry Pi3に Postfixメールサーバーを Gmailの SMTPをリレーとして立てる方法

  Raspbian Jessieで Postfix Mail serverを Gmailの SMTPを中継サーバとして設定する方法

Gitでリモートにプッシュした内容を完全に無かった事にする方法
Gitでリモートにプッシュした内容を完全に無かった事にする方法

  いわゆる Gitでやらかした時に使える最強奥義 git reset --hard HEAD~; git push -f

Raspberry Piに Avahi Bonjourサービスを入れて、ホスト名で接続できる様にする方法
Raspberry Piに Avahi Bonjourサービスを入れて、ホスト名で接続できる様にする方法

  ラズパイに Bonjourサービスを入れて IPアドレスが分からなくてもホスト名で簡単に接続する方法

Raspberry Piや Jetson NANO等をネットワークに接続した場合の IPアドレスの便利ツール xfinder
Raspberry Piや Jetson NANO等をネットワークに接続した場合の IPアドレスの便利ツール xfinder

  DHCPで自動で IPアドレスが割り当てられる場合に、ワンボードマイコンの IPアドレスを調べる場合に便利

Apache Webサーバを過剰なアクセスや DoS攻撃から守る modモジュールの紹介
Apache Webサーバを過剰なアクセスや DoS攻撃から守る modモジュールの紹介

  対 DoS攻撃用の Apache2モジュール mod_evasive、mod_dosdetector、mod_limitipconn、fail2ban等の紹介

Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入できる通販ショップ一覧まとめ
Raspberry Pi Zero Wを海外通販の Pimoroni等での購入方法、購入できる通販ショップ一覧まとめ

  ラズパイゼロW ワイヤレスモデルを海外通販でサクッと簡単に個人輸入で入手。技適通過でも国内販売は常に品切れ

Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ
Raspberry Pi 3で安定して使える相性の無い最適な microSDカードの種類のまとめ

  ラズパイ3で安定して使える microSDカードを購入する Teamと SanDiskは絶対に買わない

Raspberry Pi 3 Model Bに専用カメラモジュール RaspiCamを接続する方法
Raspberry Pi 3 Model Bに専用カメラモジュール RaspiCamを接続する方法

  ラズパイに専用カメラモジュールを接続して Raspbianで写真の静止画撮影や動画を録画する方法

Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ
Raspberry Pi 3の Linuxコンソール上で使用する各種コマンドまとめ

  ラズパイの Raspbian OSのコマンドラインで使用する便利コマンド、負荷試験や CPUシリアル番号の確認方法等も

Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳
Raspberry Pi 3公式フォーラムの FAQの内容の日本語訳

  ラズパイ公式フォーラムの「The Raspberry Pi 3 Model B Q&A thread」の日本語訳

ラズパイを意識した別物製品 Orange Pi Zeroを買ってみた、Allwinner H2+ Cortex-A7 4core
ラズパイを意識した別物製品 Orange Pi Zeroを買ってみた、Allwinner H2+ Cortex-A7 4core

  オレンジパイはラズパイよりもコスパは良いが情報が無いので利用者側に一定のスキルが必要

Orange Pi PC 2を買ってみた、Allwinner H5 Cortex-A53 4core ARM64
Orange Pi PC 2を買ってみた、Allwinner H5 Cortex-A53 4core ARM64

  ラズパイを意識した別物製品、オレンジパイはラズパイよりもコスパが良い、でも情報が無い

Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板
Espressif ESP8266 Arduino互換でスケッチが使える ESP-12Eモジュール基板

  Espressif ESP8266 ESP-12-E NodeMCU V1 ESP12 CP2102

BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)
BangGood通販はドローン以外にも面白い商品がまだまだ有った(電子工作編)

  レーザー彫刻機、カラー液晶の DIYオシロ、Arduinoや Raspberry Pi用の小型カラー液晶




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2017 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_php_pdo_mysql/