0

PHP MySQL チュートリアルを実行し、PHP を PDO 用に切り替えます。とにかく、私のクエリは空白になります。

$get_cat = $that->dbh->query("SELECT `cat_name`, `cat_desc` FROM `categories`");

            if(isset($get_cat))
            {
        while($row = $get_cat->fetch(PDO::FETCH_ASSOC))
            {
                printf("
                <tr>
                    <td>".$row['cat_name']." : ".$row['cat_desc']."</td>
                </tr>
                ");
            }
            }
            else
                {
                    echo '<tr><td>return is false</td></tr>';
                }    

$それは以下を指します:

include('db.php');
$that = new lib();    

OLD: では、なぜクエリが空白なのですか? サイコロを入れる前にブール値を返し、サイコロが入っているループでエラーが発生し、空白になります。カテゴリ テーブルにはデータが含まれており、新しいエントリの送信時にページが更新されます。NEW: 致命的なエラー: C:\wamp\www\forum\create_category.php の 36 行目で、非オブジェクトに対するメンバー関数 fetch() の呼び出し

行 36 は while ループ行です。

4

3 に答える 3

3

mysql_fetch_arrayPDOではありません。次のようなものが必要になります。

while($row = $get_cat->fetch(PDO::FETCH_ASSOC))

行を取得します。

mysql_error()また、エラーを取得するために使用することもできません。たとえば、を使用できますが$that->dbh->errorInfo()、すべてのエラーをキャッチするためのより堅牢な方法については、例外を調べる必要があります。

編集:エラーが何であるかを確認する必要があります。isset値を割り当てたばかりなので、使用しても意味がないため、常に設定されます。

于 2013-02-12T13:59:15.317 に答える
1

あなたのクエリは正しくありません。これはあなたがしようとしていることですか?

SELECT `categories`.`cat_name`, `categories`.`cat_desc` FROM `categories`

テーブル構造を見ないとわかりません。

于 2013-02-12T13:59:54.410 に答える
1

エラーをスローするように PDO に指示する必要があります。

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$res = $that->dbh->query("SELECT cat_name, cat_desc FROM categories");
while($row = $res->fetch())
{
    echo "<tr><td>$row[cat_name] : $row[cat_desc]</td></tr>\n";
}

コードを実行し、エラー メッセージを読み、適切なアクションを実行します

設定を永続的にするために、db.php ファイルに最初の行を追加することを忘れないでください。

于 2013-02-12T14:41:36.710 に答える