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か所エラーになり、内容は
以下のプログラムの最後にあります。
<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();<!DOCTYPE html>
</html>//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>
以上のエラー内容は以下です。
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 に協力するには
サポート
更新履歴
ライセンス
以上
回答2件
あなたの回答
tips
プレビュー