0

PHP PDO を使用してデータベースに接続しようとしていますが、「エラー: データベースが選択されていません」というメッセージが表示され続けます。PDO の前に持っていたコードは問題なく動作していました。誰かが私が間違っていることを見ることができますか? 私はPDOが初めてです。

古いコード:

$dbHost = 'localhost:3306';
$dbUser = 'username';
$dbPass = 'password';
$dbName = 'database_name';
$dbconn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to the database!');
mysql_select_db($dbname);

PDO コード:

$dbHost = 'localhost';
$dbUser = 'username';
$dbPass = 'password';
$dbName = 'database_name';
$dbconn = new PDO('mysql:host=$dbHost;port=3306;dbname=$dbName', $dbUser, $dbPass);
4

2 に答える 2

5

二重引用符を使用する

一重引用符では変数を使用できません。

例えば:

$dbconn = new PDO("mysql:host=$dbHost;port=3306;dbname=$dbName", $dbUser, $dbPass);

または、すべてが正しくエスケープされていることを確認してください:

$dbconn = new PDO("mysql:host={$dbHost};port=3306;dbname={$dbName}", $dbUser, $dbPass);
于 2012-08-01T20:53:17.507 に答える
2

sprintf文字列から変数を取得するために使用するニールの答えの代替:

$dbconn = new PDO(
    sprintf('mysql:host=%s;dbname=%s', $dbHost, $dbName),
    $dbUser,
    $dbPass
)

また、結果の文字列が正しいことを確認するには、それを印刷する必要があります。

print sprintf('mysql:host=%s;dbname=%s', $dbHost, $dbName);

ポート3306は MySQL のデフォルトであり、実際に指定する必要はありません。

于 2012-08-01T20:56:54.040 に答える