1

コードを mysql から PDO に切り替えようとしましたが、エラーは発生していませんが、Web ページのコンテンツが表示されないため、すべてが機能しているようです。

これは私のDB接続構造です

try {
        $conn = new PDO('mysql:host=localhost;dbname=***', '***', '***', array(PDO::ATTR_PERSISTENT => true));
        $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch(PDOException $e) {
        echo "Problem with connection ".$e->getMessage();
    }

PDOを使用してライブラリにある関数の1つで新しいページを試してみたところ、表示されました

<?php
require_once('functions/generalfunctions.php');
try {
        $conn = new PDO('mysql:host=localhost;dbname=***', '***', '***');
        $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "success";
    } catch(PDOException $e) {
        echo "I'm sorry there is a problem with your operation..";
        file_put_contents( 'dbErrors.txt', $e->getMessage(), FILE_APPEND );
        }

    try{
        $query = $conn->prepare("SELECT * FROM categories ORDER BY title");
        $query->execute();
        $i = 0;
        while($output = $query->fetch()){
            echo '<li><a href="category.php?cat_id='.encrypt_id($output["id"]).'" class="parent" rel="'.$i.'">'.$output["title"].'</a>'. "\n" .'<ul class="child'.$i.'">';
            $stm = "SELECT title,id FROM sections WHERE cat_id=".$output["id"]." ORDER by title";
            $query = $conn->prepare($stm);
            $query->execute();
            while($out = $query->fetch()){
                $stm = "SELECT count(sec_id) AS topic_count FROM topic WHERE sec_id =".$out["id"];
                $qry = $conn->prepare($stm);
                $qry->execute();
                $cnt = $qry->fetch();
                echo "<li>";
                echo '<a href="sections.php?sec_id='.encrypt_id($out["id"]).'&cat_id='.encrypt_id($output["id"]).'">'.$out["title"]."</a><span id=\"cnt_no\" class=\"badge badge-inverse\">".$cnt["topic_count"];
                echo "</span></li>";
            }   
            echo "</ul>\n</li>";
            $i++;
        }
    }catch(Exception $e){
        die(header('location: http://localhost/test'));
    }?>

だからどこに問題があるのか​​わからない。助けてください

私はちょうど主な問題の1つを見つけました...それは言います

 Notice: Undefined variable: conn in C:\wamp\www\xxx\functions\xxx.php on line 673

$conn は、PDO 接続のインスタンスを保持する変数 (オブジェクト) の名前です。

今何が問題なのだろう

4

1 に答える 1

0

コードが行うことは、ネストされたクエリです。2 つのネストされたクエリを見ました。最後$qryは安全です。

基本的に、結果セットを上書きしています$query$query2たとえば、別の変数に変更するだけです。新しい準備済みステートメントごとにこれを実行すると、$conn を再利用できます。

于 2013-06-08T20:46:52.237 に答える