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か所エラーになり、内容は
以下のプログラムの最後にあります。
特に気になるのが
プログラムの
mysqli_set_charset($mysql, 'utf8');
に対して
警告:mysqli_set_charset()は、パラメーター1がmysqliであることを期待しています。ブール値は、C:\ xampp \ htdocs \ YPHPSample \ SNS \ Untitled-2.phpの17行目に指定されています。
のエラーです。
No.2ベストアンサー
- 回答日時:
> 無料で詳しくご回答くださいまして、ありがとうございました。
> 助かります。
いえいえ、どういたしまして。
> 著書の有料版でも、動かないことってありますし
> 以下本ですが!星一つ二つです。
> SNSの構築方法があったので購入し入り口辺りで、バグ以前の話でプログラムがありませんでした。詐欺本です。
> https://www.amazon.co.jp/%E4%BD%9C%E3%82%8A%E3%8 …
> ひどかったです。数か月かけてデータベースはいってところ、入り口だけのプログラムしかなくて
> 参考程度レベルで、その先のプログラムが書かれていなかった:詐欺本でした。に裏切られました。
あらまぁ。それは災難でしたねぇ。
ぶっちゃけた事言いますが、プログラミング言語関係の書籍って殆ど同人誌と変わんないんですよ、事実上。
色々聞いてもみたんですが、そもそも編集者があんま仕事してないみたいです(笑)。せいぜい誤字を訂正するくらい。
編集者が仕事せん/キチンと全部チェックしないで本を出版する、とか他のジャンルの本じゃ(漫画でさえ!)ほぼあり得ないんですが、プログラミング関係の書籍だとそういう「仕事になってない仕事をする」のがまかり通ってる。
従って、本を買う前に、その本を出してる出版社をチェックしないとならない。じゃないと、「事実上単なる同人誌」に高い金を払う事になってしまいます。
そして、結論から言うと、「安心してプログラミング関係の書籍を買える」出版社ってたった三社しか知りません。
・オーム社
・オライリージャパン社
・翔泳社
この三社の出版物は安心出来るんだけど、その他の出版社から出てる書籍は、本屋で実際手にとって見てみなければ安心して買うことは出来ないと思います。
今後は気をつけてみて下さい。
> このプログラムは果たして冒頭に書かれています
> [ブラッシュアップ]までの意思があるかですね!
ちょっと怪しいですねぇ・・・・・・。
そもそも、その記事が書かれたのが去年でしょ?まだ書かれてから一年くらいしか経ってないんです。
ところがですね。調べてみたんですが、貴方が問題にしてた、書いてるコード
mysqli_set_charset($mysql, 'utf8');
のmysqli_set_charset()ってのがそもそも非推奨なんですよ。
mysql_set_charset:
https://www.php.net/manual/ja/function.mysql-set …
他にも、
mysql_real_escape_string:
https://www.php.net/manual/ja/function.mysql-rea …
も非推奨です。っつーか、PHP 7.0.0では既に削除されてる、って書いている。件のページを見る限り、PHP 7.2.21を使用してる筈なのに、そういう「おかしな状態」になってるんですよね。非常に不思議です。
つまり、件のページを書いてる人がPHPの仕様がどうなってるのか、現時点で全く確認してない、って事です。大昔のPHPのコードで動いていたから、と言う理由だけでそういう記事になってるんでしょうねぇ。
まぁ、そういう事もあるんで、貴方がプログラミング言語を扱う場合、なるたけプログラミング言語の仕様には目を通すクセを今後付けていって下さい。じゃないとこういう状態になってしまいます。
ちなみに、SNS、と言うか、データベースを利用したプログラミングってプログラミング初心者にはちと厳しいんですけどね。
と言うか、PHPも覚えて行けなければならないのに、「同時に」SQLも覚えていかないとならない。んで、色々ヒアリングしてみたんですが、「SQLが大好きな人って一人もいなかった」んですよ(笑)。クッソめんどくさい言語です。
まあ、SQLを覚えろ、と言うよりも、多分それこそSQLのリファレンスくらいは古本で構わないので、手元に置いておいた方が良いでしょう。
SQLハンドブック 第2版:
https://www.amazon.co.jp/SQL%E3%83%8F%E3%83%B3%E …
頑張って下さい。
再度ご回答くださいまして、有難うございました。
非常に助かります。
今度から、出版社も視野に入れて、著書を選ぶ癖をつけます。
ちなみに、問題本の会社は 秀和システム でした。
PHP非推奨は
PHPのバージョンアップも早い気がしますが
注意します。
SQLハンドブック 第2版:
早速購入します。
それと安いですし
まともに買うと2千円以上しますね!
プログラミングの取得にあたり、
今度~教科書~実践へと切れ替えました。
私みたいに!
著書ばかりやると、身につかないそうです。
実践のほうが身につくとユーチューバー 学ぶさんが言っていました。
変な質問をするかもしれませんが
今後ともよろしくお願いいたします。
No.1
- 回答日時:
全然PHPは知らんのですが。
まず、エラーではないです。Warningはエラーとは違う。「ちょっとマズいんじゃない?」と言う事を言ってるだけですね。
参照ページの
(第2回)PHPでSNSを作成してみる:
https://itport.cloud/?p=7951
は読んでみたんですが、色々と抜けてる事柄が多いような・・・・・・。
まず、MySQLとMariaDBの背景から。
MySQLは元々スウェーデンのMySQL ABが開発したデータベースですが、アメリカのSun Microsystemsと言うワークステーションのメーカーが会社ごと買収しました。そしてオープンソース活動に興味があったSun Microsystemsがオープンソースのソフトとして公開したのですね。これによって「フリーのクセに」データベース市場の殆どを制圧しました。過去、Googleなんかも、検索サイト構築でMySQLを利用しています。
ところが、今から10年前、Sun Microsystemsは、プロプライエタリなデータベース販売企業、オラクルに買収されます。Sunの中核的な業務である、ワークステーションの売上がどんどん落ちていった、ってのが大きな理由の1つです。そして、聞くトコロによると、「自由な社風だった」Sunとオラクルの社風が全然違った。これで元Sunの有名従業員等(例えばJavaの父、と呼ばれるJames Gosling)がこぞってSunを退職します。Javaなんかの権利も開発したSunが持ってたんですが、買収以降、Javaを利用してたGoogleとオラクルの間に裁判沙汰が起きていますね。
数十億ドルに及んだオラクル対グーグルの Java 著作権侵害訴訟:
https://oshaliang.com/wp-content/uploads/2019/12 …
現在も係争中で、まだ判決は出てない模様です(今年中に出る、って話かな?)。
とまぁこんな状態で、オラクルが(真偽はどうあれ)あまりオープンソース陣営では評判が良くない。当然MySQLを「今後もオープンソースなフリーソフトウェアとして」使い続けられるかどうか、皆不安に思ってたわけですよ。
そんな中、MySQLのソースコードを弄ってた人たちが、MySQLのソースコードを利用して、MySQL互換のオープンソースデータベースを新しく立ち上げた。それがMariaDBなんです(こういうのを「フォークする」と言います)。Googleも既にMySQLの使用を止めて、MariaDBに移行しています。
と言うわけで、XAMPPのデータベースがMySQLとMariaDBで「違う」って思ってるかもしれませんが、実はあんま違わないですね。その辺は心配せんで構わないと思います。
と言うわけで「欠けていた前提」の話をしましょう。
まず、MariaDBのrootパスワードを設定しないとならない。データベースは「誰でも自由に閲覧可」だと困るわけですよ。だから「権限が誰にあるのか」と言うのを設定しないと使えないのです。それがWarningが出た1つ目の理由ですね。
もう一つは、実は書かれてたプログラムに従うと、データベースが「無い」って事になっちゃうんですね。プログラム上ではfp_bbsと書かれていますが、こいつが実はまだ存在しない。MariaDB(またはMySQL)は「複数のデータベース」を扱うソフトウェアなんで、当然各データベースを「生成」します。それがまだ成されていないのです。
つまり、本当は、まずはデータベースの設定せなアカンのですが、件のページだとそれが抜けてるので、上手く動かなくて当然なのです。
XAMPPはどうやらLinux版とWindows版でファイル構成が違うらしいので、ここで僕が説明は出来ないんですけど(こっちはLinux版7.4.10で試験しました)、幸い、MariaDBのWindows版の解説は多いので、適当なWebサイトを見ればMariaDBのroot設定や、fp_bbsの作り方はすぐ分かるでしょう。下に、例としてのページを紹介しておきます。
データベース環境構築(Windows版) MariaDBの設定:
https://techfun.cc/database/windows-database-mys …
そして、次のコード
//DBに接続
$mysql = mysqli_connect('localhost', 'root', 'AoFLS030cztQMGzd6i3e', 'fp_bbs');
の第三引数、"AoFLS030cztQMGzd6i3e"、ってのは「貴方が決めたパスワード」になります(この参照ページの作者、自分のデータベースのパスワード公開してるんだけど、大丈夫なのか・笑?)。
多分これで、提示した警告(Warning)は治ると思うんですが、別の問題が出てくる気がしています。それは、プログラムのケツ付近の
//保存するための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').'\')';
で恐らく別のWarningが出るんじゃないかな。多分'とか"の数が合ってないから出るWarningでしょう。
さすがにその辺は全くPHPを知らないので(今まで見てきたら分かるでしょうが、実は1つもPHPの話はしてないです・笑)、PHPの入門書と格闘してその辺は修正して下さい。
(ここでSQL文を組み立ててる事だけ、は分かるんですけどね)
無料で詳しくご回答くださいまして、ありがとうございました。
助かります。
さすがに私の能力では、いっぺんに理解することは無理ですが
一つ一つ、ちゃんと理解していきます。
https://itport.cloud/?p=7951
このサイト自体も怪しいさはあると思います。
著書の有料版でも、動かないことってありますし
以下本ですが!星一つ二つです。
SNSの構築方法があったので購入し入り口辺りで、バグ以前の話でプログラムがありませんでした。詐欺本です。
https://www.amazon.co.jp/%E4%BD%9C%E3%82%8A%E3%8 …
ひどかったです。数か月かけてデータベースはいってところ、入り口だけのプログラムしかなくて
参考程度レベルで、その先のプログラムが書かれていなかった:詐欺本でした。に裏切られました。
著者自体もデータベースが分かていなくて出版していました。
有料版でこのレベルとなので、無料版だとそれ以下でしょ!?
バグ等は自分で修正で、動かします。
このプログラムは果たして冒頭に書かれています
[ブラッシュアップ]までの意思があるかですね!
まだスタートしたばかりですので、ゴールがあるか分かりませんが!
どんなものか試したいと思います。
Aンス:MySQLとMariaDBで「違う」って思ってるかもしれませんが、実はあんま違わない
ヒストリーが見えてきました、再度読みなします。
ご回答をもとに進めていきます。
今後ともよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CGI(Perl)でできてPHPではで...
-
smartyでホームページ上の画像...
-
フォントの色を変えるには?
-
PHPのif文でその処理を途中で抜...
-
CSV出力にHTMLが入ってしまう
-
FTPコマンドでディレクトリごと...
-
別ファイルの変数を呼び出した...
-
透過PNGが透過されない!!
-
$_SESSION 有効期限をブラウザ...
-
makefile でファイルをコピーす...
-
一定時間毎に同じ動作を繰り返...
-
ZendFramework 環境設定
-
PHPの文字化けした文字だけ削除...
-
PHPでFilename cannot be empty...
-
ftpでアップロードが出来ない
-
【file_exists】ファイルが存在...
-
「クラス関数」「メンバ関数」...
-
PHP PDOライブラリが読み込まれ...
-
CFileDialogの最初のディレクト...
-
Illustratorで文字と画像を流し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLのベースに書かれたプログ...
-
eclipseのエラーの意味
-
リダイレクトについて
-
PHPで2地点間の緯度経度の求め...
-
smartyでホームページ上の画像...
-
PHPで5秒待つプログラム
-
PHPでの再帰を用いたツリー構造...
-
PHP4でのSOAP実装方法について
-
AからBへセッション変数の受け...
-
さくらのレンタルサーバーでメ...
-
独学でPHPを勉強しています。
-
参考にすると良いオープンソー...
-
プログラミング作業効率を上げ...
-
PDOのlastInsertIDについて
-
プログラムの流れがいまいちわ...
-
さくらインターネットでImageMa...
-
セッション接続時間に間に合わ...
-
WINDOW上のPHPとApachiインスト...
-
元のプログラムと Webブラザの...
-
PHPへのデータ送信について
おすすめ情報
どうもすみません!
以上の質問内容の文字制限
で、続きは以下のURL先にあります。
http://afurieitohannei.la.coocan.jp/sns/MySQL%EF …
よろしくお願いいたします。
以上ですが!
なんで!エラーになるのでしょうか?
長くなり申し訳ないのですが
よろしくお願いいたします。