質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

2回答

1273閲覧

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

1981225

総合スコア67

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

1クリップ

投稿2020/09/10 18:18

編集2020/09/10 18:33

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

https://itport.cloud/?p=7951
のサイトには
[PHPでSNSを作成してみる]の現在第1回~第3回
まであり、ブラッシュアップしていくそうです。
冒頭のURL先の
(第1回)PHPでSNSを作成してみる
https://itport.cloud/?p=7914
に書かれています、環境は

環境設定
OS
1 Windows10(64bit)
2 Webサーバー Apache/2.4.41 (Win64)
3 PHPバージョン 7.2.21
4 DB(MySQL) 8.0.17 for Win64

です。
しかし私の環境は

① OSはWindows10 64bit
② XAMPP Control Panel v3.2.2
※詳しい環境は一番下にあります。

以上ですが!
環境が異なります。
大きな違いは
DB(MySQL)
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()は、パラメーター1がmysqliであることを期待しています。
ブール値は、C:\ xampp \ htdocs \ YPHPSample \ SNS \ Untitled-2.phpの17行目に指定されています。

パラメータと出ていますので仕様の違い有ですね!?
ここが問題だと思います。

※② 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 に協力するには
サポート
更新履歴
ライセンス

以上

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/09/10 23:00

エラーメッセージそのままで調べてでてくる情報では足りませんか? エラー内容だけ見るとMySQLかMariaDBかは関係なさそうですが。
1981225

2020/09/21 19:49

ご回答くださいまして、ありがとうございました。 どうもすみません! 解決に辺り、そもそも論なんですが!  問題のプログラムはPHPのバージョン5.0台で書かれていましたので 現在7.0の時代には未対応なプログラムでした。 そのため! 今度は、 プログラムの修正にかかりますので、 ここでいったん解決とさせていただきます。 今後ともよろしくお願いいたします。
m.ts10806

2020/09/22 09:22

いずれにしても質問は編集できますし、マークダウンの対応だけでもされたほうが良いかと。 今やっておかないと次には忘れてます。
guest

回答2

0

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

仕様の違いではありません。

上のmysqli_connectは「成功すればmysqliオブジェクト、失敗すればfalse」を返す関数です。接続に失敗した返り値をチェックせずそのまま渡してしまうと、MySQLかMariaDBかとは無関係にそのような状態となります。

投稿2020/09/11 01:13

編集2020/09/11 01:14
maisumakun

総合スコア145201

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

単純にrootのパスワードが間違えているだけでは?
ソースはコピペするとしてもローカルの設定はご自身のものに合わせてください

投稿2020/09/11 02:23

yambejp

総合スコア114921

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/09/11 02:35

参考にされているサイトがmysqli関数をベースにしているのもちょっと気になります。 まだ経験がすくないなら早いうちにpdoに慣れておいたほうがよいと 個人的には思うのですが・・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問