メンバーメニュー

ようこそ、ゲストさん

質問

  • フリー PHP+MySQL

    データベースに接続できません。
  • 本文:

    初心者です。よろしくお願いいたします。ネットからデータベースに接続する部分を見つけたんですが
    <?php
    require_once ("newpage8.php");
    print $APPTITLE;

    MyTitlePrint("実験開始!データベース接続テスト");

    $user = 'xxxxx_wp1';
    $pass = ‘?????';

    try {
    // MySQLへの接続
    $dbh = new PDO('mysql:host=xxxxx_wp1;dbname=xxxxx_wp1', $user, $pass);

    // 接続を使用する
    $sth = $dbh->query('SELECT * from foo');
    echo "<pre>";
    foreach($sth as $row) {
    print_r($row);
    }
    echo "</pre>";

    // 接続を閉じる
    $sth = null;
    $dbh = null;

    } catch (PDOException $e) { // PDOExceptionをキャッチする
    print "エラー!: " . $e->getMessage() . "<br/gt;";
    die();
    }

    print "$APPFOOTER";

    ?>
    エラーの指摘が $dbh = new PDO('mysql:host=xxxxx_wp1;dbname=xxxxx_wp1', $user, $pass);
    上の文で;が期待されてないところにあるとのエラーがでます。PDOがそもそもつかえるのかもわからないのですが、php.iniの変更もやり方が違うようですし、どうしたら良いか?ご指導をお願いします。

  • 緊急度:通常投稿者:isampmさん投稿時間:2020/06/04 08:46
質問に対する回答は締め切られました

回答 No.10312

  • この回答がベストアンサーです

  • 本文:

    >Fatal error: Uncaught PDOException: SQLSTATE[28000] [1045] Access denied
    >for user 'isamstar2_mysql'@'sv5.php.starfree.ne.jp' (using password: YES)

    SQLSTATE[28000] [1045]から考えると、ユーザー名、パスワードが間違ってるのでは?



    ========
    動作検証用サンプル
    ========

    //自身の環境に合わせて書き換える
    $hostname = "mysql1.star.ne.jp"; //MySQLホスト名
    $dbname ="test_db"; //データベース名
    $username = "test_web"; //MySQLユーザ名
    $password = "xxxxxxx"; //MYSQLのパスワード


    //------
    $dsn = "mysql:host=".$hostname.";dbname=".$dbname;

    try {
    $dbh = new PDO($dsn, $username, $password);
    } catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    }


    ========
    わざと間違えてエラーにする
    ========

    ■MySQLホスト名がNG
    Connection failed: SQLSTATE[HY000] [2005] Unknown MySQL server host 'mysql1.star.ne.jpxx' (2)

    ■データベース名がNG
    Connection failed: SQLSTATE[42000] [1044] Access denied for user 'test_web'@'sv12.star.ne.jp' to database 'test_dbxx'

    ■MySQLユーザ名がNG
    Connection failed: SQLSTATE[28000] [1045] Access denied for user 'test_webxx'@'sv12.star.ne.jp' (using password: YES)

    ■MYSQLのパスワードがNG
    Connection failed: SQLSTATE[28000] [1045] Access denied for user 'test_web'@'sv12.star.ne.jp' (using password: YES)

  • 投稿者:k-tanさん 投稿時間:2020/06/05 20:36
質問者からのコメント

k-tanさん、回答ありがとうございます。
ご呈示のコードで試してみました。エラーでしたが、メッセージは
Connection failed: SQLSTATE[28000] [1045] Access denied for user 'isamstar2_mysql'@'sv5.php.starfree.ne.jp' (using password: YES)でした。
MySQLのユーザー名が違うのか?パスワードが違うのか?どちらかに相当するようにも思えます。MySQLユーザはもともとのものを削除してしまいましたので、追加したように思いますが、その後は何故か追加が出来ないようです。データベースのアクセス権とかも弄れないようですが、アクセスは出来る設定だったと思います。
 アドバイスをお願い致します。

回答 No.10297

  • 本文:

    PHP: PDO::__construct - Manual https://www.php.net/manual/ja/pdo.construct.php

    =========

    ネットオウル Q&A掲示板
    https://secure.netowl.jp/bbs/detail.cgi?td=2729

    ========


    host=で、MYSQLのホスト名(サーバー名)を指定する
    dbname=で、作成したデータベース名

    とか、接続文字列を正しい値に設定しないと、接続できないと思うよ。

    ====
    [フリー PHP+MySQL]データベースの設定 | 無料レンタルサーバー【スターサーバーフリー】 https://www.star.ne.jp/free/manual/homepage_database_1.php

    上記の用に作成したら、

    データベース名:sample_db
    データベースユーザー:sample_user

    になる。


    ======
    [フリー・フリー 容量増加・フリー PHP+MySQL]サーバー管理ツール | 無料レンタルサーバー【スターサーバーフリー】 https://www.star.ne.jp/free/manual/tool_server_1.php


    MySQLホスト名は、管理画面のサーバー情報のところに書かれてる。

    host=で指定するのは、そのホスト名。
















  • 投稿者:k-tanさん 投稿時間:2020/06/04 09:13
質問者からのコメント

回答ありがとうございます。
 過去の掲示板を見ました。
$dsn = 'mysql:host=mysql1.webcrow-php.netowl.jp;dbname=xx_test';
$username = 'xx_user';
$password = 'passxx';

$dbh = new PDO($dsn, $username, $password);
上で接続できたとの内容でしたが、自分ではできませんでした。hostは何処に書いてるんでしょうか?

上のコードを自分の環境に合わせたつもりで実行すると
Fatal error: Uncaught PDOException: SQLSTATE[28000] [1045] Access denied for user 'isamstar2_mysql'@'sv5.php.starfree.ne.jp' (using password: YES)途中から省略してますが、何処でエラーになっているか?教えてもらえないでしょうか?

回答 No.10300

  • 本文:

    https://secure.netowl.jp/bbs/detail.cgi?td=4537

    結局削除はできたんでしょうか?

    >php.iniの変更もやり方が違うようです
    ”なに”と違うと?
    無料の共有サーバーなので制限が入っていて、変更できるところが決められています。
    有料のスターサーバーならもう少し自由にできます。

    スターサーバーは共有サーバーしか提供していないので、サーバーの管理権限はどうやっても貰えません。
    サーバーの管理権限のある状態であれこれいじりたいのであればローカルにApacheの動く環境を作ったほうがいいと思います。

  • 投稿者:kashaさん 投稿時間:2020/06/04 10:14
質問者からのコメント

kashaさん、回答ありがとうございます。phpMyAdminでWPが先頭についているファイルをすべて削除できました。最後にデータベースと同じ名前のテーブルが出来ていたので、削除しました。今はisamstar2_wp1のデータベース名の下にmeiboテーブルが一個あります。

古い参考書だとphp.iniはeditorで何行目を修正するとかあります。Latin1をsjisへ変更など。

Apacheも考えましたが、昔はほぼ参考にしていた「PHP5.0+MySQLで作る」が動いたんですが、原因不明ですがApacheのモニターは正常に動くんですが、起動とストップが効きません。し、やはりサーバーを使ってみたいんです。

回答 No.10303

  • 本文:

    [フリー PHP+MySQL]
    PHP環境(php.ini)設定

    https://www.star.ne.jp/free/manual/homepage_phpini_1.php

  • 投稿者:k-tanさん 投稿時間:2020/06/04 20:24
質問者からのコメント

k-tanさん、回答ありがとうございます。
 kashaさんの回答にあったのですが、freeの場合はphp.iniを選択方式のようです。個人対応でなく、選択の範囲は限られる、そんな感じですかね。

回答 No.10305

  • 本文:


    >hostは何処に書いてるんでしょうか?


    [フリー PHP+MySQL]
    データベースの設定
    https://www.star.ne.jp/free/manual/homepage_database_1.php


    データベース設定のところで
    MYSQLのホスト名があるので、それを(たぶん)書く。

    たぶん、mysqlからはじまってそうなきがする


    外してるかもわからないが、
    HOSTに「sv5.php.starfree.ne.jp」を指定してるのがダメなのでは?

    DBサーバーとWebサーバーが別になってるので
    Webサーバーをしていすると、DBにつながらないと思う。



    >freeの場合はphp.iniを選択方式のようです。個人対応でなく、選択の範囲は限られる、そんな感じですかね。

    スターサーバーの場合は、有料版も管理画面から同じように変更する。

    あと、他社のレンタルサーバーでも「php.ini」に書けば、何でも反映されるわけではなくて、制限かかってる所多い。

    >古い参考書だとphp.iniはeditorで何行目を修正するとかあります。Latin1をsjisへ変更など。

    意味理解してないんじゃないかなぁ?

    あと、DB接続するにあたって、php.iniの変更とか必要ないような。

    レンタルサーバーで、PHPでちょっと遊ぶ程度では、変更する必要はまずないと思う。








  • 投稿者:k-tanさん 投稿時間:2020/06/05 01:47
質問者からのコメント

k-tanさん、回答ありがとうございます。
PDOでエラーが出ます。
__construct('mysql:host=mysq...', 'isamstar2_xxxxx', 'xxxxxxxxx') #1 {main} thrown in /home/isamstar2/isamstar2.starfree.jp/public_html/conecttest.php on line 21
一部情報を隠してますが、#1がエラーだということでしょうか?#1はmysql:hostでしょうか?ユーザーのisamstar2_xxxxxでしょうか?あるいはまったく違う?教えていただければ問題が絞れます。

回答 No.10311

  • 本文:

    PHP環境(php.ini)設定 [フリー PHP+MySQL]
    https://www.star.ne.jp/free/manual/homepage_phpini_1.php

    PHP環境(php.ini)設定 スタードメイン無料サーバー
    https://www.star.ne.jp/manual/homepage_phpini_3.php

    PHP環境(php.ini)設定 スターサーバー
    https://www.star.ne.jp/manual/homepage_phpini.php

    比べてみればわかりますが、スタードメイン無料サーバーとスターサーバーには『php.ini直接編集』という項目が存在しますが、フリー PHP+MySQにはそれがありません。


    過去にもあれこれいじって遊びたいという人は複数いましたが、やりたいことというのが共有サーバーでは無理なことが多いんですよね。
    Web上でやるのなら、VPSや専用サーバーを借りないとダメなんじゃないかということを共有サーバーでやろうとしていることが多い感じです。


    本当にあれこれ実験的なことをしたいのであればWeb上に露呈しないローカル環境でやらないといけないことだと思います。
    Web上に露呈しているサーバーではセキュリティの都合などでどうしても何らかの制限が入ります。


    個人的には他の質問も含めて、PHPやMySQLのバージョンの違いなどを気にかけていないのが気になりました。
    「PHP5.0+MySQL5.0で構築する最速Webシステム」はアマゾンの書評を見る限りだとそのまま鵜呑みにするのは危険な感じがします。


    なにがしたいのかよくわかりませんけど
    https://www.star.ne.jp/free/functions.php
    スターサーバーフリーではログファイル(サーバーへのアクセスログや、エラーログなどがダウンロードできる機能)は利用できません。

  • 投稿者:kashaさん 投稿時間:2020/06/05 12:20
質問者からのコメント

kashaさん、コメントありがとうございます。
 初心者を言いわけではないですが、実際に知らないので、問題に出くわします。例えばPHPはバージョンによっても違うらしいことなどは、在りますが、実際に場面に出くわさないと分からないこともあります。
 同じようなことがアパッチでLocalでやるもの良いのでしょうが、実際のサーバーで駄目だったら、意味のないことをやっていることにはなりませんか?
 ご指摘の通りの、危険性があることは、頭の片隅にでも、入れておきたいと思います。ありがとうございます。

回答 No.10314

  • 本文:

    PHPプログラムでMYSQL接続に使っているユーザー名とパスワードで
    phpmyadmin でログインできるんですかね?

    ログインできるのなら、ユーザー名・パスワードは正しいのでは?

    https://www.star.ne.jp/free/manual/homepage_database_1.php


    権限がないと、もしかして、ログインできないかもしれないが・・。



    >データベースのアクセス権


    >>
    データベースへアクセスする権限を持ったユーザを設定することが出来ます。

    権限追加ユーザの選択

    一覧画面において、該当のデータベースの「権限追加可能ユーザ」より、権限を設定するユーザを選択してください。

    https://www.star.ne.jp/free/manual/homepage_database_1.php

    <<

    権限に関しては、この設定をしてたら、アクセスできるはず。

  • 投稿者:k-tanさん 投稿時間:2020/06/06 07:11

回答 No.10315

  • 本文:

    回答をくださった方々ありがとうございます。
    MySQLユーザを元に戻したら接続できました。げんいんはふめいですが。その様子はhttp://isamstar2.starfree.jp/に書いています。

  • 投稿者:isampmさん 投稿時間:2020/06/06 07:11