質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

3回答

948閲覧

PHPをローカルでDBにアクセスできない

HHH-

総合スコア28

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2020/11/11 21:21

php

1<html> 2<head><title>PHP TEST</title></head> 3<body> 4 5<?php 6 7$dsn = 'mysql:dbname=test;host=localhost'; 8$user = 'myname'; 9$password = 'mypass'; 10 11try { $dbh = new PDO($dsn, $user, $password); 12 13 print('<br>'); 14 15 if ($dbh == null){ 16 print('接続に失敗しました。<br>'); 17 }else{ 18 print('接続に成功しました。<br>'); 19 } 20}catch (PDOException $e){ 21 print('Error:'.$e->getMessage()); 22 die(); 23} 24 25$dbh = null; 26 27?> 28 29</body> 30</html>

参考にしたサイト

PHPは生きているのですが
エラーの内容が

error

1Error:could not find driver

となります。
'接続に失敗しました。'になりません

初めてDBに接続を試みるのでこのエラーレスポンスが正しいのかどうがすらわかりません。
mariaDBです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/11/12 05:01

参考にした情報はともかく、ご自身の環境を一通り記載願います。 サーバーOS、バージョン どうやって環境構築したか 全て起動しているか
HHH-

2020/11/12 06:06

はぃ! OS=Windows10 DB=mariaDB PHP=PHP 7.4 (7.4.12)VC15 x64 Thread Safe (2020-Oct-27 19:49:49) https://windows.php.net/download#php-7.4 webサーバー = Nginx すべてWindows10で統一して動かしてます。 PHPはC:\phpにおいてますが、作業を行ってる場所は php -S 127.0.0.1:8080 -t C:\Users\noraneko\Desktop\testphp です(127.0.0.1:8080でPHPをブラウザーから動作してるのが確認できます) Nginxは \users\nginx\index.html=127.0.0.1でHTMLがブラウザーで動作してるのが確認できます MariaDBはC:\Program Files\MariaDB 10.5\binです PHPもnginxもmariaDBも環境変数で編集済みでコマンドから直で実行できます。 PHPの詳細ですが https://www.evernote.com/shard/s618/sh/1ca74cad-b565-4c6d-92eb-4de1c86bb3c5/eac33ed266e49d118a25bc1e0ed6d041 の通りです。
guest

回答3

0

PHPの設定>>MySQLへの接続

PHPの設定では

「php.iniでの設定が必要となる。」
しかしC:¥phpでphp.iniファイルを探してもない、

本当に無いかどうかは
https://qiita.com/ritukiii/items/624eb475b85e28613a70
このサイトのように

php

1<?php 2phpinfo();

を実行して調べてみることもできます。

実際に実行してみると...確かに無いのだが、

無かった場合はC:¥phpに

php.ini-development
php.ini-production
この二つのファイルが存在するかどうかを確認して、
https://www.javadrive.jp/php/install/index5.htmlこのサイトのように、
php.iniファイルを作成することができる。

作成は簡単で
php.ini-developmentを複製コピーして名前をphp.iniに変更するだけ。

あとはPHPの設定に移行し、

テキストエディター(Sublime Text3)などでphp.iniファイル開くと

;extension=bz2
;extension=curl
;extension=ffi
;extension=ftp
;extension=fileinfo
;extension=gd2
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=ldap
;extension=mbstring
;extension=exif ; Must be after mbstring as it depends on it
;extension=mysqli
;extension=oci8_12c ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
;extension=pdo_mysql  <<< ここ
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
;extension=pdo_sqlite
;extension=pgsql
;extension=shmop

; The MIBS data available in the PHP distribution must be installed.
; See http://www.php.net/manual/en/snmp.installation.php
;extension=snmp

;extension=soap
;extension=sockets
;extension=sodium
;extension=sqlite3
;extension=tidy
;extension=xmlrpc
;extension=xsl

参考サイトでは
https://www.javadrive.jp/php/mysql/index1.html
「php_mysql.dll」と書かれた箇所を検索して下さい。と書いてありますが
現在は
;extension=pdo_mysql
に代わっているようです。

なのであえて言いませんが
※「php_mysql.dllextension=php_mysqli.dll」ではなく
単に「mysql、あるいは**;extension** の mysql」という構文を探すとよいでしょう。

;extension=pdo_mysql から**頭文字の「;」(セミコロン)**を消して上書き保存をすれば

php

1<html> 2<head><title>PHP TEST</title></head> 3<body> 4 5<?php 6 7$dsn = 'mysql:dbname=test;host=localhost'; 8$user = 'myname'; 9$password = 'mypass'; 10 11try { $dbh = new PDO($dsn, $user, $password); 12 13 print('<br>'); 14 15 if ($dbh == null){ 16 print('接続に失敗しました。<br>'); 17 }else{ 18 print('接続に成功しました。<br>'); 19 } 20}catch (PDOException $e){ 21 print('Error:'.$e->getMessage()); 22 die(); 23} 24 25$dbh = null; 26 27?> 28 29</body> 30</html>

当初のPHPコードを実行してみると。

127.0.0.1:8080/test.php

1接続に成功しました。

以上の結果が返ってきました。

まとめ

1)php.iniファイルを探す

2)無かった場合はC:¥phpにphp.ini-developmentphp.ini-productionファイルのどちらかをphp.iniに変更する

3)PHPの設定で**;extension=pdo_mysql**の「;」セミコロンを消して上書き保存をする

回答者の皆様本当にありがとうございました。

投稿2020/11/12 20:44

HHH-

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

おそらく、MySQLへの接続を設定していないのでは。
(どのように環境構築したかなど、可能な限り詳細に質問の内容に追記して下さい。)

参考にされているサイトは、興味があるところをつまんでコピペで動くという感じでは無いと思われるので、頭から順に確認していくのが良いかと思いますよ。

投稿2020/11/12 01:52

tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HHH-

2020/11/12 06:22

はぃ! OS=Windows10 DB=mariaDB PHP=PHP 7.4 (7.4.12)VC15 x64 Thread Safe (2020-Oct-27 19:49:49) https://windows.php.net/download#php-7.4 webサーバー = Nginx すべてWindows10で統一して動かしてます。 PHPはC:\phpにおいてますが、作業を行ってる場所は php -S 127.0.0.1:8080 -t C:\Users\noraneko\Desktop\testphp です(127.0.0.1:8080でPHPをブラウザーから動作してるのが確認できます) Nginxは \users\nginx\index.html=127.0.0.1でHTMLがブラウザーで動作してるのが確認できます MariaDBはC:\Program Files\MariaDB 10.5\binです PHPもnginxもmariaDBも環境変数で編集済みでコマンドから直で実行できます。 この環境でもだいじょうぶそうですか? ちなみにこちらがPHPの詳細です https://www.evernote.com/shard/s618/sh/1ca74cad-b565-4c6d-92eb-4de1c86bb3c5/eac33ed266e49d118a25bc1e0ed6d041
tanat

2020/11/12 06:33

> 調べてみましたけど、https://www.javadrive.jp/php/mysql/この記事で > 「PHPの設定」はやってないです! であれば少なくともそれが原因の一つなので、設定を行ってください。 よくわかっていない状態で個別に環境を作るというのは無理があるので、 その他の環境についても参考ページを完全に踏襲して環境を作り直してください。
HHH-

2020/11/12 06:53

やってみます!
HHH-

2020/11/12 18:49

すみません 遅くなりました。 探すのに時間がかかってしまい申し訳ありません。 見つけたというか、作ったというか、PHP.iniが無いと思いきや >php.ini-development >php.ini-production の二つのファイルのうち「php.ini-development」を>>php.iniに変えなきゃいけなくなってたらしく。 以下のサイトを参考に進めていきました https://www.javadrive.jp/php/install/index5.html が。。。php.iniファイルを作って中身をSublime Textなどでひらいて 「「 php_mysql.dll 」」を探してみても、、見つからないと思いきや それっぽいものがありました。 913から949行目までのものになります↓ ;extension=bz2 ;extension=curl ;extension=ffi ;extension=ftp ;extension=fileinfo ;extension=gd2 ;extension=gettext ;extension=gmp ;extension=intl ;extension=imap ;extension=ldap ;extension=mbstring ;extension=exif ; Must be after mbstring as it depends on it ;extension=mysqli ;extension=oci8_12c ; Use with Oracle Database 12c Instant Client ;extension=odbc ;extension=openssl ;extension=pdo_firebird ;extension=pdo_mysql <<これではないでしょうか? ;extension=pdo_oci ;extension=pdo_odbc ;extension=pdo_pgsql ;extension=pdo_sqlite ;extension=pgsql ;extension=shmop ; The MIBS data available in the PHP distribution must be installed. ; See http://www.php.net/manual/en/snmp.installation.php ;extension=snmp ;extension=soap ;extension=sockets ;extension=sodium ;extension=sqlite3 ;extension=tidy ;extension=xmlrpc ;extension=xsl これでしょうか・・・;extension=pdo_mysql <<これではないでしょうか? ;extension=pdo_mysql >> extension=php_mysql.dll <<このように書き換えればよさそう?
HHH-

2020/11/12 18:53

はぅw 泣きたいです! 調べても調べても、私と皆さんはいろいろと違う! 普通の手順で進められなくなっているのは私だけでしょうか。。。
HHH-

2020/11/12 18:57

extension=php_mysql.dllじゃなく;extension=pdo_mysql・・・ PDOってなんですか。。。 このままセミコロンを外せばいいのでしょうか。。。それともPDOの部分をPHPに変えるべきでしょうか。。
HHH-

2020/11/12 19:16

https://blog.codecamp.jp/programming-php-pdo-mysql-1 >PDOクラスは、PHPとデータベースサーバーの間の接続を行うクラスです。 >PDOはPHP5.1移行にはPHPをインストールした時点で使用可能 コーディングするときに使うクラスのことでしょうか。。。 try { $dbh = new PDO($dsn, $user, $password); ーーーーーーーーー↑なるほどです。 https://books-nekoya.jp/Programming/MySQL/php.html このサイトでは $db = mysql_connect( $hostName, $userName, $password ); このようにコーディングしているのですが。。。 これは古いから;extension=pdo_mysqlではなくextension=php_mysql.dllなんですね! >PHPではPDOドライバを直接呼ぶのではなく、データベース共通のインスタンスを作ります。 。。。古いからではなさそう? PDOとconnectの違いがわからないです。。。私はどちらを使うべきなのでしょうか。 https://teratail.com/questions/62468(mysql_connect と PDO の違い) ↑ 私もここで引っかかってる可能性が多きかもしれません。。。にしてもすごい変化球ですね。 ここまで複雑になった言語を見たのは初めてです。。。JavaやHTMLしかやったことありませんが。
HHH-

2020/11/12 19:24

....接続に成功しました。
HHH-

2020/11/12 19:24

wwwwwwwwwwww つらい。。。なきたいwww はぅうう泣きたいですw お騒がせしました。。。
HHH-

2020/11/12 19:27

本当に何なんでしょう。。。訳が分かりませんができました。。。はい >おそらく、MySQLへの接続を設定していないのでは。 と言ってくれなかったたどり着けなかった。。。感謝でいっぱいです(><) 苦しかったけどゴール、、、いえ。スタート地点に立つことができました。
tanat

2020/11/13 01:49

解決して良かったです。 参考にされているサイトでも、参考されていたページからのリンク https://www.javadrive.jp/php/pdo/index1.html にはPDOの設定方法について記述がありましたね。 (すみません、回答時のリンクがトップからのリンクでした) > PDOとconnectの違いがわからないです。。。私はどちらを使うべきなのでしょうか。 今から学習するのであれば、PDOの利用だけ出来るようになれば基本的には問題無いです。 歴史的な経緯によりmysqli_connect()を使っているようなアプリケーション(WordPress等)を触る気概があれば学習するくらいの認識で問題ありません。
HHH-

2020/11/13 14:40

はぅw 古いとかではなかったw ありがとうございます。 今後もご指導ご鞭撻のほどよろしくお願いいたします。
tanat

2020/11/13 14:44

あ、 mysql_connect()は古いので、使ってはいけません(記事や書籍にある場合も古すぎるので参考にしない方が良いです) mysqli_connect()は場合によっては使うこともあります。 基本はPDOを使うのが良いです
HHH-

2020/11/13 14:54

了解です!
guest

0

php実行環境をどうやってどのように構築したか察することすら
情報不足のためわかりませんが、
webサーバーのドキュメントルート(例えば htdocs ディレクトリなど)に

php

1<?php 2phpinfo();

とだけ書いたphpファイルを置いて
webブラウザからアクセスすれば
php実行環境を調べられます。
そしてデータベースにアクセスするドライバーの有無もわかります。

投稿2020/11/11 22:20

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問