『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?
についてヒント頂けたら幸いです。
No.1
- 回答日時:
相手が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);
}
:
:
この回答への補足
すみません、間違ったスクリプトで質問してしまいました。
// データベースに接続
$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
のあたりが怪しいとにらんでいます。
パスワードとか設定した覚えがないです。
ちなみにエラーメッセージです。
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
が記載されています。
No.2
- 回答日時:
データベースにユーザ権限が与えられていないようです。
データベースにログインして
grant all on sample_db.* to username@localhost;
を実行して、sample_db のデータベースにusername'@'localhostのアクセスを承認してください。
この回答への補足
回答ありがとうございました。
やってみましたが、だめでした。同じエラーがでています。
でも、やり方はそういうことだと思います。
DOSで接続する方法がわからないのでphpMyadmin上から
上記SQLを実行してみました。エラーもでていないのですが
これがよくなかったのでしょうか?
ちなみに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());
No.3
- 回答日時:
まず確認ですが
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.4ベストアンサー
- 回答日時:
mysql sample_db -u username
だとどうですか?
この回答への補足
たびたびありがとうございます。
上記コマンドだと接続できませんでしたが、
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のところのユーザー名がちがいますね。
ここが問題なのでしょうか?
自己解決ですが、ようやく接続できました。
// 接続設定
define("DIARY_DB_HOST", "localhost"); // ホスト名
define("DIARY_DB_USER", "root"); // ユーザー名
define("DIARY_DB_PASS", ""); // パスワード
接続設定を上記変更したところ接続できました。
Kaoneさんのご助言と書籍をもとにやってみました。
Kaoneさんのおかげです。
またよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
円マークが付加されて保存され...
-
実行時エラー3131 FROM 句の構...
-
エクセルVBAについて
-
VBAをつかってクエリの情報を抽...
-
php データ削除
-
Pro*Cの構文エラー
-
MySQLでデータベースにデータin...
-
DBで検索結果に該当するデータ...
-
テキストボックスに入れた内容...
-
テーブルに入っているデータと...
-
Resource id #3 をフィールドの...
-
VB.NET エラーになる箇...
-
Q&Aサイトを作成していてURLの...
-
PHP&MySQLでの文字列+数列の一...
-
sortable ギブアップです…助け...
-
PHPで[]の使い方について
-
縦に長い<table>でなく横に長い...
-
ResultSetインターフェイスでの...
-
PHPでPostgreSQLのテーブルを表...
-
XAMPPで画面が真っ白になります。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アポストロフィを含む文字列の追加
-
MySQLでshal()関数のエラーがで...
-
MySQLでデータベースにデータin...
-
実行時エラー3131 FROM 句の構...
-
VBAをつかってクエリの情報を抽...
-
JAVA SQLServerException 列名 ...
-
Q&Aサイトを作成していてURLの...
-
<VB.NET>INSERT文でDBにデータ...
-
テキストボックスに入れた内容...
-
SQL文が実行できません
-
insert1つの処理でもトランザ...
-
Pro*Cの構文エラー
-
php テーブルを作れない
-
PHPで[]の使い方について
-
mysql_fetch_objectのエラー
-
php テーブルが作成できない
-
エラー3011
-
XAMPPで画面が真っ白になります。
-
ResultSetインターフェイスでの...
-
dbに登録したデータをphpのプル...
おすすめ情報