エラーの原因を教えてください。

 

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

にある[保存処理]のプログラムを丸ごとコピーして

SNSを作成中です。

このプログラムが推奨している環境は以下です。

1 OS:       Windows10(64bit)

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

3 PHPバージョン: 7.2.21

 

4 DB:      (MySQL8.0.17 for Win64

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

しかし私のPC環境は以下です。

1)OS:       Windows10(64bit)

2)Webサーバー    : Apache/2.4.46 (Win64) OpenSSL/1.1.1g

5)PHPバージョン: 7.4.9

 

4)DB:  10.4.14-MariaDB - mariadb.org binary distribution

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

私の環境で、サイトのプログラム動かすと、以下のエラーが出ます。

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

 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, bool given in C:\xampp\htdocs\YPHPSample\SNS\Untitled-2.php on line 17

DB接続エラー

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

以上は全部DB関連ですが、プログラムの場所は以下です。

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

//DBに接続

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

mysqli_set_charset($mysql, 'utf8');

if (!$mysql) {

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

 

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

(汗)。どうしたらエラーがでなくなりますか?

よろしくお願いします。

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

問題のプログラムは以下です。

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

<!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>

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

以下余談

サイトが推奨している環境と私の環境は異なっています。

 

大きな違いは!

私はMariaDBですが、サイトはDBMySQL)を使っていますが!

しかし、DBの開発者は同じなので、体質も同じであり、それからくるエラーは

「あんまり関係ない」との、回答を得ていますので、問題はないと思います。

 

後は、PHPバージョンは私が最新なので、サイトは古く非推奨も

多少ありますが、以後バグが発生する可能性はあります。

今回のエラーとは、DB関連なので違うような気がします。