2

PDOでこのチュートリアルを実行しようとしましたが、正確に実行しましたが、非常に基本的なレベルで接続しようとすると、オブジェクト以外のエラーが出力されます。$ query変数のブール値を決定するために小さなテストを行いましたが、falseとして出力され、エラーが発生しています。なぜこれをしているのですか?:

チュートリアル

http://www.youtube.com/watch?v=lb0NYODtGr4&feature=share&list=EC23A4AFEA46A5CB23

エラー

致命的なエラー:16行目のC:\ xampp \ htdocs \ projects \ dentaloffice \ php \ php_connect.phpの非オブジェクトでメンバー関数fetch()を呼び出す

コード

<?php

$config['db'] = array(
    'host'      => 'localhost',
    'username'  => 'root',
    'password'  => '',
    'dbname'    => 'dentaloffice'
);

$db = new PDO('mysql:host=' . $config['db']['host'] . ';dbname =' . $config['db']['dbname'], $config['db']['username'], $config['db']['password']);

$query = $db->query("SELECT appointments.ROOM FROM appointments");

if($query === false){
    echo '$query variable returned false <br>';
}else{
    echo '$query variable returned true <br>';
}

while ($row = $query->fetch(PDO::FETCH_ASSOC)){
    echo $row['ROOM'];
}

?>
4

3 に答える 3

4

この行を変更します。

$db = new PDO('mysql:host=' . $config['db']['host'] . ';dbname =' . $config['db']['dbname'], $config['db']['username'], $config['db']['password']);

...これに...

$db = new PDO("mysql:host={$config['db']['host']};dbname={$config['db']['dbname']}",
              $config['db']['username'], $config['db']['password']);

つまり、の直後の空白記号を削除するdbnameと、機能します。)PDO DSN構文は非常に厳密であり、例の文字列はデータベースが指定されていないように解析されます。したがって、エラーが表示されます。

ところで、 PDOコードのブランチでerrorInfo()以前のコメントに示されている方法で常にチェックすることをお勧めします。false query/statement/resultそして今、あなたはおそらくその理由を理解しています。)。

于 2012-09-09T00:44:50.017 に答える
1

phpinfoファイルを作成し、PDOが有効になっていて、正しいドライバーがインストールされていることを確認します。

于 2012-09-09T00:05:17.740 に答える
1

PDOが有効になっていることを確認してください。

ところで、次のようにクエリの検証を確認することができます。

if($query) // will return true if succefull else it will return false 
{ 
// code here for true
} 
于 2012-09-09T00:09:52.947 に答える