私は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
私の環境で、サイトのプログラム動かすと、以下のエラーが出ます。
Notice: Undefined variable: mysql in C:\xampp\htdocs\YPHPSample\SNS\Untitled-2.php on line 17
Warning: mysqli_set_charset() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\YPHPSample\SNS\Untitled-2.php on line 17
Notice: Undefined variable: mysql in C:\xampp\htdocs\YPHPSample\SNS\Untitled-2.php on line 18
DB接続エラー
以上は全部DB関連ですが、プログラムの場所は以下です。
//DBに接続
$mysql = mysqli_connect('localhost', 'root', 'AoFLS030cztQMGzd6i3e', 'fp_bbs');
mysqli_set_charset($mysql, 'utf8');
if (!$mysql) {
exit('DB接続エラー');
}
全部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();</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>
以下余談
サイトが推奨している環境と私の環境は異なっています。
大きな違いは!
私はMariaDBですが、サイトはDB(MySQL)を使っていますが!
しかし、DBの開発者は同じなので、体質も同じであり、それからくるエラーは
「あんまり関係ない」との、回答を得ていますので、問題はないと思います。
後は、PHPバージョンは私が最新なので、サイトは古く非推奨も
多少ありますが、以後バグが発生する可能性はあります。
今回のエラーとは、DB関連なので違うような気がします。
あなたの回答
tips
プレビュー