• 締切済み

PDOでの接続について

こんにちは。 Webアプリケーション勉強中の者です。LAMPを使って、どうにかしようと奮闘中です。VineLinux4、Apache2、MySQL5、PHP5という構成の環境(サーバー)を準備しました。データベースアクセスにはPDOを使うつもりで、下記テストコードを書いたのですが、接続できなくて困っています。 $dsn = "mysql:host=aoss;dbname=abc"; $usr = "abc"; $psw = "1234"; try { $pdo = new PDO( $dsn, $usr, $psw ); } catch( PDOException $e ){ var_dump( $e->getMessage() ); } たったこれだけなのですが、結果が以下のようなエラーとなっています。 string(85) "SQLSTATE[28000] [1045] Access denied for user 'abc'@'localhost' (using password: YES)" MySQL Administrator や MySQL ODBC3.51Driver を使っての、MS-Accessからの接続などでは、問題ありません。 各ソフトのバージョンですが、 MySQL : 5.0.27 PHP : 5.2.4 PDO Driver: 5.0.27 です。 何から調べていけば良いのかアドバイスお願いします。 以上、よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

host=aoss と指定してるのに エラーメッセージが ~ 'abc'@'localhost' ~ となっているのは気のせいかな?

actmaru
質問者

お礼

ご回答ありがとうございます。 host=aoss の部分は、転記時の間違いでした。 host=aoss として、実行するとエラーメッセージは以下のようになります。 ~'aoss'@'localhost'~  環境で何か間違いがあると推定し、ごちゃごちゃやってるうちに、Apacheが正常動作しなくなったので、この件については進んでいません。もう少しまともな事が言えるようになれば、また質問致しますので、その時はよろしくお願いします。 以上。

関連するQ&A

  • PDO_MYSQLを利用したDB接続ができない

    閲覧ありがとうございます。 次のコードを実行してMYSQLへの接続をしようとすると以下のようなエラーになってしまいます。 エラー!: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) try { $dbh = new PDO('mysql:host=localhost;dbname=DB名', 'ユーザ名', 'パスワード'); } catch (PDOException $e) { print "エラー!: " . $e->getMessage() . "<br/>"; die(); } どなたか原因が分かる方はご教授いただければと思います。 ちなみにmysql_connect()でなら接続できます。 phpinfoを確認すると、確かにPDO、PDO_MYSQLは表示されています。

    • ベストアンサー
    • PHP
  • PDOを使いたい

    PHP初心者です PHP 5.2.5 MySQL 5.1.22 PDOでMYSQLに接続するにはどうすればいいのでしょうか? いままではこんな感じでしたがPDOにするとどんな感じになるんですか? $link=mysql_connect('localhost', 'user', 'pass')or die(mysql_error()); mysql_select_db(user'); mysql_query('SET NAMES UTF8'); PDOで接続する方法らしいのですが疑問を持ってしまったので教えてください 質問1 最初の$db_nameや$passなどの変数のとこに直接、localhostと書くのはまずいですか? 質問2 古いMYSQL系はカッコで囲めばいいので簡単だったのですがPDOの記号の意味を教えてください->とか=>です 質問3 PDO::ATTR_EMULATE_PREPARESは指定する必要があるんでしょうか?指定しないとパフォーマンスが下がるんですか?PDO::ATTR_EMULATE_PREPARESとはなんでしょうか? try { $pdo = new PDO("mysql:dbname=$db_name;host=$serv","$user","$pass", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8`")); } catch (PDOException $e) { die($e->getMessage()); } よろしくお願いします

    • ベストアンサー
    • 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 と表示されてしまいます。 構文エラーだと思い、自分で出来る限りなおしたのですが解決できません。 どなたかアドバイスよろしくお願いいたします。

  • PDOとmysql_real_escape_str

    PDOとmysql_real_escape_string() RHEL5 Apache2.x PHP Version 5.3.5 MySQL 5.1.45 を使っています。 PDOでMySQLにアクセスしている場合、、 mysql_real_escape_stringを使うと エラーになります。 Warning: mysql_real_escape_string(): Access denied for user 'apache'@'localhost' (using password: NO) in /var/www/html/hogehoge/main.php on line 190 Warning: mysql_real_escape_string(): A link to the server could not be established in /var/www/html/hogehoge/main.php on line 190 で、いろいろ調べてみたのですが、 PDOを使っている場合は、mysql_real_escape_stringは不要と書いてある場合と、PDOはSQLの脆弱性があると書いてある場合がありました。 実際はどうするのがいいのでしょうか? 以下は、とりあえずうごいているが、脆弱性がのこっているのか分からないコードです。 どうぞよろしくお願い申し上げます。 $dsn = "mysql:dbname={$objConifg->dbName}; host=127.0.0.1"; $user = $objConifg->dbUser;; $passwd=$objConifg->dbPass; try { $db = new PDO($dsn,$user,$passwd); $db->exec('SET NAMES utf8'); //print 'DB接続OK.'; } catch (PDOException $e){ die("接続エラー: {$e->getMessage()}"); } ・ ・ ・ ・ $stt = $db->prepare("select * from keywords where keyword_h1_url = \"{$REQ_PATH}\""); $stt->execute(); ========================================

    • 締切済み
    • PHP
  • PHPUnitでPDOのテスト

    PHPUnitで以下のようなテストをすると、エラーがでます。 <?php require_once 'PHPUnit/Extensions/Database/TestCase.php'; class DatabaseTest extends PHPUnit_Extensions_Database_TestCase { protected function getConnection() { $dbtype = "mysql"; $sv = "localhost"; $dbname = "testdb"; $user = "root"; $pass = ""; // データベースに接続する $dsn = "$dbtype:dbname=$dbname;host=$sv"; $pdo = new PDO($dsn, $user, $pass);           ← ここでエラー return $this->createDefaultDBConnection($pdo, 'book'); } protected function getDataSet() { return $this->createFlatXMLDataSet(dirname(__FILE__).'/book-seed.xml'); } public function testInitDataSet() { $dataset = $this->getDataSet(); $this->assertDataSetsEqual( $dataset, $this->getConnection()->createDataSet(), "データセットの初期化エラー" ); } } ?> エラー内容 PDOException: could not find driver could not find driverでググると、php.ini にextension=pdo.soを追加しろとありました。 pearでpdo.soをインストールし、php.iniに追加して、php(lampp)を再起動すると、 PHP Warning: Module 'PDO' already loaded in Unknown on line 0 となります。 どのようにすればよろしいのでしょうか? よろしくお願いいたします。 ubuntu10.10 xampp-linux-1.7.1(Apache:2.2.11,PHP:5.2.9,mysql:5.1.33) PHPUnit 3.4.13

    • ベストアンサー
    • PHP
  • DB接続の関数化

    下記のデータベースに接続する関数の意味は「MySQLに接続して、PDOクラスで接続したデータベース情報を返す」で合っていますか? function get_db_connect(){ // MySQL用のDSN文字列 $dsn = 'mysql:dbname='. DB_NAME .';host='. DB_HOST .';charset='.DB_CHARSET; try { // データベースに接続する $dbh = new PDO($dsn, DB_USER, DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4')); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (PDOException $e) { exit('接続できませんでした。理由:'.$e->getMessage() ); } return $dbh; }

    • ベストアンサー
    • PHP
  • ○LinuxでのPDO利用

    ○LinuxでのPDO利用 PHPで次のようなコードを記述しています。 ------------------------------------------------------------- $db = 'mysql:host=localhost;dbname=dbn'; $login = 'user'; $password = 'pass'; try { $pdo = new PDO($db , $login, $password); $sth = $pdo->prepare("SELECT * FROM USER WHERE NAME=? AND PASSWORD=?"); $sth->bindParam(1, $name); $sth->bindParam(2, $password); $sth->execute(); while($row = $sth->fetch(PDO::FETCH_ASSOC)){ $user[] = $row; } }catch(PDOException $e){ var_dump($e); } ------------------------------------------------------------- このコードがWindowsでxampp上で動かすと問題ないんですが、 Linux上で動かすと$sth->execute();でfalseが返ってきて、 値を取得できません。 設定の問題だと思うのですが、 どこにその問題があるのかが分かりません。 環境は CentOS apache 2.0 php 5.3 mysql 5.1 PDO driver,pdo_mysqlもphpinfo()から確認できてます。 php.iniにも extension=pdo.so extension=pdo_mysql.so の記述はあります。 どなたか分かる方、宜しくお願いします。

    • ベストアンサー
    • PHP
  • PDOで接続をechoするとエラーになる現象の対処

    PDOでPHPとMySQLを連動させる時にエラーが出てしまいます。 対処法を教えて下さい。 サーバーの設定(PHP・MySQLなど)が原因のような気がしていますが、自分では解決できません。 PDOでINSERTを繰り返し行っています。 下記のソースでうまく動作をしています。 しかし、ソースの中で $dbh = new PDO($DSN , $DBUSER , $DBPASS); の後に echo $dbh を入れるとエラーになってしまいます。 このプログラムは複数のレンタルサーバーなどで動作が確認できています。 今回新しくVPSを借りてプログラムを設置したら上記のような現象が出てしまいました。 php.ini , my.cnf , httpd.conf などに設定が必要なのでしょうか? 普通にPHPのプログラムは動くのですが、接続 $dbh をecho したときだけエラーになるのです。 環境 PHP:5.1.6 MySQL:5.0.77 //$DNS,$DBUSER,$DBPASSは別途設定し読み込み。 //$nameには次々に名前が入り、1件ずつDBに登録されていく。 foreach($matches as $match) { $name = $match[1]; try { $dbh = new PDO($DSN , $DBUSER , $DBPASS); //echo $dbh; $query=<<<EOF INSERT INTO sample (name) VALUES (:name) EOF; $stmt = $dbh->prepare($query); $stmt->bindParam(':name', $name); $stmt->execute(); } catch(PDOException $e) { print "Error!: " . $e->getMessage() . "<br>"; die(); } }

  • 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
  • xamppでpdoを用いてSQLiteを使う方法

    いつもお世話になります。 xamppの環境でphpからSQLite3のファイルを操作したいと思っています。 xamppのSQLiteはSQLite2が標準でSQLite3を扱うためにはpdoを使う必要がある旨のページを見て php_pdo.dll、php_pdo_sqlite.dllをphp\extフォルダへDLし、php.iniのextension=設定も行いました。 下記のようなスクリプトを書いたのですが、 Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in ・・・ というエラーメッセージが出てどうにも原因がわかりません。 どのようにしたらよいのか教えていただけないでしょうか。 <?php //---PDOでのアクセスStart $dsn = 'sqlite:mondo_quest3.db'; $pdo = new PDO($dsn); $sql="select * from ans order by id"; $entries = $pdo->query($sql); while ($entry = $entries->fetch()) { // 処理を書く } //---PDOでのアクセスEnd ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう