1

PHP PDOに接続してデータに対して簡単なクエリを実行しようとしていますが、オブジェクトが作成されていないというエラーが発生しますか?私はこれをできるだけ単純にしようとしていますが、シングルトンデータベースクラスを作成せず、代わりに、この最初の(単純な)クエリ用に必要なときにデータベースPDOを定義するようにアドバイスされています。

これが私が得ているエラーです。コードを修正するには何をする必要がありますか?

致命的なエラー:11行目の非オブジェクトin / home / ... index.phpでメンバー関数fetch()を呼び出す

<?php

$dbhost = "localhost";
$dbname = "x";
$dbuser = "y";
$dbpass = "z";

$db = new PDO("mysql:host=$dbhost;db_name=$dbname", $dbuser, $dbpass);
$query = $db->query("SELECT * FROM tablename");

while ($row = $query->fetch(PDO::FETCH_ASSOC)){
    echo $row['field_name'],'<br>';
}
?>

また、phpを使用してmysqlテーブルからデータを選択するためのより良い方法があるかどうかをお知らせください。mysqliではなくPDOを学習しようとしています。ありがとう

4

3 に答える 3

1

おそらく、タイプミスやテーブルが存在しないなど、クエリに問題があります。

次に$queryPDOStatementではありませんがfalse、を呼び出すことはできませんfalse->fetch()

于 2012-12-27T10:06:05.437 に答える
1

->queryまたはのいずれかを選択する必要があります->fetch両方の方法を混在させることはできません。

->query()

    $sql = 'SELECT * FROM tablename';
    foreach ($db->query($sql) as $row) {
        echo $row['field_name'],'<br>';
    }

->fetch()

$sth = $db->prepare("SELECT * FROM tablename");
$sth->execute();

while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
    echo $row['field_name'],'<br>';
}
于 2012-12-27T10:06:23.147 に答える
1

あなたのタイプミスがあります:

$db = new PDO("mysql:host=$dbhost;db_name=$dbname", $dbuser, $dbpass);

する必要があります:

$db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);

タイプミスを修正した後、このコードは完全に機能します。

$db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);

$query = $db->query("SELECT * FROM wp_blogs");

while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
    var_dump($row).'<br>';
}
于 2012-12-27T10:07:56.333 に答える