• ベストアンサー
  • 困ってます

データベースに接続できない

『PHP5逆引き大全500の極意』にあるサンプルスクリプトで PHPとMYSQLと学んでいます。 XAMPPもインストールし、スタンドアロンでMysqlを操作しようと しています。 しかし、どのサンプルスクリプトをいじっても接続できません。 require("config.php"); header("Content-Type: text/plain; charset=EUC-JP"); $db = odbc_connect(ODBC_CONNECT_DSN, ODBC_CONNECT_USER, ODBC_CONNECT_PASS) or die("データソースに接続できません!\n"); でエラーがでています。 ちなみにconfig.phpの内容 // DSN define("ODBC_CONNECT_DSN", "DSN=sample_db;"); // ユーザー名 define("ODBC_CONNECT_USER", "username"); // パスワード define("ODBC_CONNECT_PASS", "password"); // テーブル名 define("ODBC_TABLE_NAME", "php500"); となっています。SQL文を実行し、テーブルを作りましたが、 上手く言っているかどうか・・・。 文字コードをちゃんと設定していないせいか、????????のような データがカラムに入っています。 サンプルスクリプト上、データベースが自動作成されるスクリプトも あるのですが・・・。 1.useename、userpassの設定 2.phpMyAdminでデータベースを作成する方法 3.データベース作成時の文字コードの設定。utf?sjis? についてヒント頂けたら幸いです。

noname#102630
noname#102630

共感・応援の気持ちを伝えよう!

  • MySQL
  • 回答数4
  • 閲覧数869
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.4
  • Kaone
  • ベストアンサー率60% (33/55)

mysql sample_db -u username だとどうですか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

自己解決ですが、ようやく接続できました。 // 接続設定 define("DIARY_DB_HOST", "localhost"); // ホスト名 define("DIARY_DB_USER", "root"); // ユーザー名 define("DIARY_DB_PASS", ""); // パスワード 接続設定を上記変更したところ接続できました。 Kaoneさんのご助言と書籍をもとにやってみました。 Kaoneさんのおかげです。 またよろしくお願いします。

質問者からの補足

たびたびありがとうございます。 上記コマンドだと接続できませんでしたが、 C:\Documents and Settings\KKK>mysql -h localhost -u pma Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1112 Server version: 5.0.45-community-nt MySQL Community Edition (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. と接続できました。phpMyadminからホスト名、ユーザ名を 見ることができ、上記コマンドを打ちました。 MySQL自体をわかっていない自分なのですが、 おそらくdifineのところのユーザー名がちがいますね。 ここが問題なのでしょうか?

その他の回答 (3)

  • 回答No.3
  • Kaone
  • ベストアンサー率60% (33/55)

まず確認ですが windows サーバにapache php mysql で全て同一サーバですよね まずWindowsであれば、mysqlをインストールしたフォルダ たとえば C:\>cd \mysql\bin に移動して、 mysql test 又は作成した mysql sample_dbでログインできると思います あと確認ですが、usernameというユーザは追加しているんですよね。 ※mysqlの作成コマンド grant all on *.* to username identified by 'password'; もし、特権ユーザ(root)でアクセスしているなら、パスワードは設定していますか? ※特権ユーザーのパスワード設定 set password for root=password('設定するパスワード'); これでもダメでかつこのmysqlコマンドもうまく動かないようであれば、windowsによってポートが制限されているのかも mysqlがデフォルトで起動しているのは3306ポートです。 ちなみにmysql_connectではなく、ODBCを使うなら管理ツールのデータソース(ODBC)の設定が必要です。(たしか・・ 最近WindowsでDBつかってないからうろ覚えですが 幸運を祈ってます。

共感・感謝の気持ちを伝えよう!

質問者からの補足

またまた回答ありがとうございます。 >windows サーバにapache php mysql で全て同一サーバですよね はい、1台のPCにXAMPPというソフトを入れました。 これですべての環境が整ってしまうようです。 >mysql test 又は作成した mysql sample_dbでログインできると思います mysql sample_dbでログインしようとしたところ「ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO」 またmysql -u usernameとコマンドを打ってみたところ ↓↓ C:\Documents and Settings\KKK>mysql -u username Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 904 Server version: 5.0.45-community-nt MySQL Community Edition (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. と出力されログインできているようなのですが・・・。 でも、そもそもmysql sample_dbでログインできないと駄目ですよね? なにかヒントがあったらまたご助言よろしくお願い致しますm(__)m

  • 回答No.2
  • Kaone
  • ベストアンサー率60% (33/55)

データベースにユーザ権限が与えられていないようです。 データベースにログインして grant all on sample_db.* to username@localhost; を実行して、sample_db のデータベースにusername'@'localhostのアクセスを承認してください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ちなみにsample_dbを作ったときのsqlをはっておきます。 -- -- データベース -- CREATE DATABASE IF NOT EXISTS sample_db; USE sample_db; -- -- テーブル -- CREATE TABLE diary_user ( name CHAR(32) NOT NULL, pass CHAR(32) NOT NULL, PRIMARY KEY (name) ); CREATE TABLE diary_auth ( uid CHAR(32) NOT NULL, sid CHAR(32) NOT NULL, life DATETIME NOT NULL, PRIMARY KEY (uid) ); CREATE TABLE diary_log ( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(255) NOT NULL, story TEXT NOT NULL, modify DATE NOT NULL, PRIMARY KEY (id,modify) ); -- -- 管理用データ -- INSERT INTO diary_user VALUES (md5('owner'),md5('admin')); -- -- テスト用データ -- INSERT INTO diary_log (title,story,modify) VALUES('テストタイトル','テストメッセージ',now());

質問者からの補足

回答ありがとうございました。 やってみましたが、だめでした。同じエラーがでています。 でも、やり方はそういうことだと思います。 DOSで接続する方法がわからないのでphpMyadmin上から 上記SQLを実行してみました。エラーもでていないのですが これがよくなかったのでしょうか?

  • 回答No.1
  • Kaone
  • ベストアンサー率60% (33/55)

相手がmysqlならODBCを使わないで@mysql_connect(DBNAME,DBUSERNAME,DBPASSWORD); で良いんじゃないでしょうか? 例  $dbc = @mysql_connect( "sample_db", "username", "password" ); $sql = "select * from table"; $r = @mysql_query( $sql, $dbc ); if( $r ){ $l = @mysql_fetch_array($r); } : :

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ちなみにエラーメッセージです。 Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'localhost' (using password: YES) in C:\xampp\htdocs\sample\chapter3\3-5\412.php on line 47 データベースに接続できません line 47には上記の MYSQL_CONNECT_HOST,MYSQL_CONNECT_USER, MYSQL_CONNECT_PASS が記載されています。

質問者からの補足

すみません、間違ったスクリプトで質問してしまいました。 // データベースに接続 $db = mysql_connect(MYSQL_CONNECT_HOST, MYSQL_CONNECT_USER, MYSQL_CONNECT_PASS) or die("データベースに接続できません\n"); であってもdieの方のエラーメッセージが表示されてしまいます。 MYSQL_CONNECT_HOST,MYSQL_CONNECT_USER, MYSQL_CONNECT_PASS のあたりが怪しいとにらんでいます。 パスワードとか設定した覚えがないです。

関連するQ&A

  • phpとデータベース

    書籍のサンプルを実行しても表示されません pearのインストールが怪しいですが、どこを直せばいいかわかりません。 ご教授お願いいたします。 <HTML> <HEAD> <TITLE>PHPのテスト</TITLE> </HEAD> <BODY> <?php require_once("DB.php"); $dbUser = "sample"; // ユーザー名 $dbPass = "password"; // パスワード $dbHost = "localhost"; // ホスト名 $dbName = "sampledb"; // データベース名 $dbType = "mysql"; // データベースの種類 // MySQL="mysql", PostgreSQL="pgsql", MS SQL-Server="mssql", ODBC="odbc" などを設定 // 接続文字列の作成 $dsn = "$dbType://$dbUser:$dbPass@$dbHost/$dbName"; // データベースに接続 $conn = DB::connect($dsn); // 接続に失敗したらメッセージを表示して終了します。 if (DB::isError($conn)){ die($conn->getMessage()); } print('接続に成功しました。'); // データベースから切断します。 $conn->disconnect(); ?> </BODY> </HTML>

  • MySqlに接続できない

    環境:PHP5,MySql5,XP 下記の構文でDBへの接続エラーがでます。 php.iniでのインクルードpathの設定もあっています。 (DB.phpも上記インクルードpathにあります) 'pear list'コマンドでDBも確かにインストールされています。 これ以外でチェックするところがあれば、教えてください。 <?php // DBクラスモジュールをインクルード require_once("DB.php"); $dbtype = "mysql"; $sv = "localhost"; $dbname = "********"; $user = "root"; $pass = "******"; // データベースに接続する $dsn = "$dbtype://$user:$pass@$sv/$dbname"; $conn = DB::connect($dsn); if (DB::isError($conn)) { die("接続エラー"); } ?>

    • ベストアンサー
    • PHP
  • PDOでのデータベース接続について質問です

    現在、PDOでのmysqlデータベースの操作を学習しています。 以前、mysql_connectでのデータベース接続を学習していた際に、 使用したいデータベースの名前を変数名$dbnameに格納し、 $connect = mysql_connect($server, $user, $password); mysql_select_db($dbname); でデータベースに接続していました。 その要領をふまえて PDOでもデータベースの名前を変数名$dbnameに格納し、 $db = new PDO('mysql:host=localhost;dbname=$dbname',$user,$password); で接続しようと試みたところ、エラーになりました。 そこで、データベース名を変数に格納せず、 $db = new PDO('mysql:host=localhost;dbname=データベース名',$user,$password); で試してみたところ、接続が出来ました。 そこで質問なのですが、PDOでデータベースに接続する場合、 データベース名を変数に格納することは物理的に出来ないのでしょうか? それともうひとつ質問があります。 mysql_connectを使用したときはデータベース接続用のPHPファイルを作成し、 データベース接続が必要なPHPファイルの時にrequire_onceでデータベース接続用のPHPファイルを呼び出ししていましたが、PDOでもデータベース接続用のPHPファイルを呼び出して接続することは可能でしょうか? 絶対に変数に格納したいとか、絶対にデータベース接続を別ファイルにしたいというわけではありませんが、もともとmysql apiで学習していたためmysql apiとPDOの違いが少し気になってしまいました。 ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • データベースに情報が登録されない・・・

    お世話になってます。 現在カゴヤのサーバーでデータベースに情報を登録しようと試みているのですが、登録できません。ぜひみなさんのお力を貸して下さい。phpは初心者なのでわかりやすく教えて頂けると嬉しいです。 ----------------------------------------------------------------- カゴヤPEARインストール済み PHP 5.2.6 Apacheバージョン Apache/1.3.41 MySQLバージョン 5.0.33 ----------------------------------------------------------------- <?php //PEARのDBライブラリを読み込む require_once("DB.php"); // データベースとの接続情報を記述 $dsn = "mysql://ユーザ名:パスワード@localhost/データベース名"; $db = DB::connect($dsn); if(PEAR::isError($dsn)){ print "ConnectError"; exit; } $sql = "INSERT INTO テーブル名 VALUES ('111112222233','1111111111','2222222222','3333333333','4444444444','5555555555','6666666666','7777777777','8888888888','9999999999','1212121212','2323232323','3434343434','4545454545')"; $res = $db->query($sql); $num = $db->affectedRows(); print $num . "rows Update"; ?>

    • ベストアンサー
    • PHP
  • MySQL, PHP をインストール後、データベースにアクセスできません。

    自宅で使っている Windows Vista に ・Apache 2.2.8 ・PHP 5.2.6 ・MySQL 5.0.45 ・PHPMyAdmin 2.11.4 をインストールしました。 それぞれがインストールされたことは確認でき、 PHPMyAdmin でテーブルを作成、インポートなども出来たのですが、 PHP からデータベースにアクセスできずに困っています。 phpinfo(); などは表示されるのですが、 いざデータベースにアクセスしようとすると出来ず、PHPのエラーも表示されません。 $host = 'localhost'; $db_name = 'hoge'; $user = 'root'; $pass = '***'; $con = mysql_connect($host, $user, $pass) or die ("cannot connect DB"); mysql_select_db($db_name,$con) or die ("cannot select DB"); という記述以降に書かれた部分は実行されず、それ以前の部分のみ表示されます。 error_reporting(E_ALL); を記述していても何も表示されないため、原因すら分かりません。 何か心当たりはありますでしょうか?

    • ベストアンサー
    • PHP
  • すでに接続してあるデータベースについて

    mysqlデータベースにperlで接続する際は、 use DBI; $dsn="DBI:mysql:database=test:host=localhost"; $dbh = DBI->connect($dsn,user,passwd); とし、データベースに接続して、 $sth = DBI->prepare("SELECT * From `table`); ・・・・・・ と続いていくと思いますが、 すでにデータベースに接続(コネクション)していた場合、どのように書けばいいのでしょうか? どなたかよろしくお願いします。

    • ベストアンサー
    • Perl
  • wp-config.phpで保存するのでしょうか?

    // ** MySQL 設定 - この情報はホスティング先から入手してください。 ** // /** WordPress のためのデータベース名 */ define('DB_NAME', 'wordpress'); /** MySQL データベースのユーザー名 */ define('DB_USER', 'kouzou'); /** MySQL データベースのパスワード */ define('DB_PASSWORD', 'rhythmkt0'); /** MySQL のホスト名 */ define('DB_HOST', 'localhost'); /** データベースのテーブルを作成する際のデータベースの文字セット */ define('DB_CHARSET', 'utf8'); /** データベースの照合順序 (ほとんどの場合変更する必要はありません) */ define('DB_COLLATE', ''); 以下にデータベース接続のための詳細を入力してください。これらのデータについて分からない点があれば、ホストに連絡を取ってください。 データベース名 wordpress WordPress で使用したいデータベース名。 ユーザー名 kouzou データベースのユーザー名。 パスワード rhythmkt0 データベースのパスワード。 データベースのホスト名 localhost localhost が動作しない場合には Web ホストからこの情報を取得することができます。 テーブル接頭辞 wp_1 ひとつのデータベースに複数の WordPress をインストールしたい場合、これを変えてください。 wp-config-sample.phpを上記のように入力してwp-config.phpで保存するのでしょうか? LinuxMintを使っています。 いつも、マグレでここをパスしてたのですが理屈を分かっていません。 どなたかアドバイスをください。 宜しくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • ワードプレスの初期設定

    ロリポップでのデータベースを設定しているのに 500のエラーが出てしまいます。 wp-configの記述が良く分かりません。 簡単に説明していただけますでしょうか? この記述に間違えがありますか? <?php // ** MySQL settings ** // // ** MySQL settings ** // define('DB_NAME', '00000_2008'); // データベース名 define('DB_USER', 'OA00000'); // ユーザー名 define('DB_PASSWORD', '0000'); // パスワード define('DB_HOST', 'localhost'); // データベースサーバ (ほとんどの場合変更する必要はありません) define('DB_CHARSET', 'utf8'); define('DB_COLLATE', '');

  • PHPからMySQLに接続することができません。

    PHPからMySQLに接続することができません。 解決方法をご存じの方は教えていただけないでしょうか。 PHPから、mysql_connect を行った際、以下のエラーが発生してしまいます。 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13) 環境 OS:CentOS 5.3 DB:Mysql 5.0.67(ソースからインストール) Web:Apache PHPのソースの一部を以下に記します。   $db_host = 'localhost';//DB_NAME;   $db_user = 'user';//DB_USER;   $db_pass = 'pass';//DB_PASS;   $db = mysql_connect($db_host,$db_user,$db_pass); 以下の方法も試したのですが、エラーメッセージは変わりませんでした。   $mysql_connect("localhost:/tmp/mysql.sock","mysql","passwd") 端末のコマンドからMySQLへの接続は成功します。 ホスト名、ユーザー名、パスワードも上記と同一のものです。   $ /usr/local/mysql/bin/mysql -h localhost -u user -p   Enter password:pass 以上です。宜しくお願いします。

    • 締切済み
    • PHP
  • PHPとデータベースの接続ができません

    開発環境はXamppで、OSはWindowsです。 データベースを使いたいと考えていますが、初心者で非常に困っています。 <?php $dsn = 'mysql:dbname=testdb1; host=127.0.0.1'; $usr = 'ユーザー名'; $passwd = 'パスワード'; try { $db = new PDO($dsn, $usr, $passwd); print '接続に成功しました'; $db = NULL; } catch (PDOException $e) { die("接続エラー:{$e->getMessage()}"); } 上記のファイル、connect.phpを実行しても、 Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\connect.php on line 3 と表示されてしまいます。 構文エラーだと思い、自分で出来る限りなおしたのですが解決できません。 どなたかアドバイスよろしくお願いいたします。