エラーの原因を教えてください。
私はhttps://itport.cloud/?p=7951
にある[保存処理]のプログラムを丸ごとコピーして
SNSを作成中です。
このプログラムが推奨している環境は以下です。
1 OS: Windows10(64bit)
2 Webサーバー : Apache/2.4.41 (Win64)
3 PHPバージョン: 7.2.21
4 DB: (MySQL)8.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ですが、サイトはDB(MySQL)を使っていますが!
しかし、DBの開発者は同じなので、体質も同じであり、それからくるエラーは
「あんまり関係ない」との、回答を得ていますので、問題はないと思います。
後は、PHPバージョンは私が最新なので、サイトは古く非推奨も
多少ありますが、以後バグが発生する可能性はあります。
今回のエラーとは、DB関連なので違うような気がします。