MySQLのベースに書かれたプログラムをMariaDBで動かす場合

 

https://itport.cloud/?p=7951

のサイトには

[PHPSNSを作成してみる]の現在第1回〜第3回

まであり、ブラッシュアップしていくそうです。

冒頭のURL先の

(1)PHPSNSを作成してみる

https://itport.cloud/?p=7914

に書かれています、環境は

----------------------------------

環境設定

OS

1 Windows10(64bit)

2 Webサーバー Apache/2.4.41 (Win64)

3 PHPバージョン 7.2.21

4 DBMySQL 8.0.17 for Win64

-----------------------------------------

です。

しかし私の環境は

-------------------------------

@ OSWindows10 64bit

A XAMPP Control Panel v3.2.2

  ※詳しい環境は一番下にあります。

---------------------------------

以上ですが!

環境が異なります。

大きな違いは

DBMySQL

Mariadb

です。

冒頭にサイトの第2回

https://itport.cloud/?p=7951

にありますプログラムは以下ですが

私のパソコンでは2か所エラーになり、内容は

以下のプログラムの最後にあります。

 

               <!DOCTYPE html>

<html lang="ja">

    <head>

        <meta charset="UTF-8">

        <title>BBS</title>

    </head>

    <body>

        <h1>BBS</h1>

        <form action="bbs.php" method="post">

            名前: <input type="text" name="name" /><br>

            内容: <input type="text" name="comment" size="60" /><br>

            <input type="submit" name="submit" value="送信" />

        </form>

        <?php

            //DBに接続

            $mysql = mysqli_connect('localhost', 'root', 'AoFLS030cztQMGzd6i3e', 'fp_bbs');

            mysqli_set_charset($mysql, 'utf8');

            if (!$mysql) {

                exit('DB接続エラー');

            }

            //DBの選択

            $result = mysqli_select_db($mysql, 'fp_bbs');

            if (!$result) {

                exit('DB選択エラー');

            }

            $errors = array();

 

            //POSTなら保存処理

            if($_SERVER['REQUEST_METHOD'] === 'POST') {

                //名前のチェック

                $name = null;

                //名前がnullでないことをチェック

                if(!isset($_POST['name']) || !strlen($_POST['name'])) {

                    $errors['name'] = '名前を入力してください';

                } else if (strlen($_POST['name']) > 40) {

                    $errors['name'] = '名前は40文字以内で入力してください';

                } else {

                    $name = $_POST['name'];

                }

                 //コメントのチェック

                 $comment = null;

                 //名前がnullでないことをチェック

                 if(!isset($_POST['comment']) || !strlen($_POST['comment'])) {

                     $errors['comment'] = 'コメントを入力してください';

                 } else if (strlen($_POST['comment']) > 200) {

                     $errors['comment'] = 'コメントは200文字以内で入力してください';

                 } else {

                     $comment = $_POST['comment'];

                 }

                //エラーがなければ保存

                if (count($errors) === 0) {

                    //保存するためのSQL分を作成

                    $sql ='INSERT INTO post(Pname, comment, created_day)VALUES("'

                        .mysqli_real_escape_string($mysql, $name).'","'

                        .mysqli_real_escape_string($mysql, $comment).'",\''

                        .date('Y-m-d H:i:s').'\')';

 

                    //保存する

                    mysqli_query($mysql, $sql);

                }

            } 

        ?>

    </body>

</html>

 

以上のエラー内容は以下です。

 

Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES)

 in C:\xampp\htdocs\YPHPSample\SNS\Untitled-2.php on line 16

 

Warning: mysqli_set_charset() expects parameter 1 to be mysqli, boolean given in C:\xampp\htdocs\YPHPSample\SNS\Untitled-2.php on line 17

DB接続エラー

 

 特に気になるのが

プログラムの

mysqli_set_charset($mysql, 'utf8');

に対して

 

 警告:mysqli_set_charset()は、パラメーター1mysqliであることを期待しています。

ブール値は、C\ xampp \ htdocs \ YPHPSample \ SNS \ Untitled-2.php17行目に指定されています。

 パラメータと出ていますので仕様の違い有ですね!?

 ここが問題だと思います。

 

※A XAMPP Control Panel v3.2.2

の仕様は以下です。

-------------------------------------------

データベースサーバ

サーバ: 127.0.0.1 via TCP/IP

サーバの種類: MariaDB

サーバの接続: SSL is not being used ドキュメント

サーバのバージョン: 10.1.36-MariaDB - mariadb.org binary distribution

プロトコル バージョン: 10

ユーザ: root@localhost

サーバの文字セット: UTF-8 Unicode (utf8)

--------------------------------------------------

ウェブサーバ

Apache/2.4.34 (Win32) OpenSSL/1.1.0i PHP/7.2.10

データベースクライアントのバージョン: libmysql - mysqlnd 5.0.12-dev - 20150407 - $Id: 38fea24f2847fa7519001be390c98ae0acafe387 $

PHP 拡張: mysqliドキュメント curlドキュメント mbstringドキュメント

PHP のバージョン: 7.2.10

--------------------------------------------------

phpMyAdmin

バージョン情報: 4.8.3, 最終安定バージョン: 4.9.5

ドキュメント

phpMyAdmin オフィシャルサイト

phpMyAdmin に協力するには

サポート

更新履歴

ライセンス

------------

以上