0

私は mysql_connect 接続を PDO 接続に変換しようとしましたが、成功しませんでした。これが私が持っているものです:

$host = 'localhost';
        $user = 'root';
        $pwd = '';
        $db = 'jdlferreira';
        $connection = mysql_connect($host, $user, $pwd) or die("Could not connect");
        mysql_select_db($db) or die("Could not select database");

        $query = "SELECT COUNT(*) FROM blog";
        $result = mysql_query($query) or die(mysql_error());
        $num_rows = mysql_fetch_row($result);

        $pages = new Paginator;
        $pages->items_total = $num_rows[0];
        $pages->mid_range = 9; // Number of pages to display. Must be odd and > 3
        $pages->paginate();

        $query = "SELECT id, title, resume, date
            FROM blog
            ORDER BY date DESC $pages->limit";
        $result = mysql_query($query) or die(mysql_error());


        while ($row = mysql_fetch_row($result)) {
//do stuff
}

そして、私がPDOでやろうとしたこと:

include_once 'inc/db.inc.php';
        $db = new PDO(DB_INFO, DB_USER, DB_PASS);
        mysql_select_db("jdlferreira") or die("Could not select database");

        $query = "SELECT COUNT(*) FROM blog";
        $result = mysql_query($query) or die(mysql_error());
        $num_rows = mysql_fetch_row($result);

        $pages = new Paginator;
        $pages->items_total = $num_rows[0];
        $pages->mid_range = 9; // Number of pages to display. Must be odd and > 3
        $pages->paginate();

        $query = "SELECT id, title, resume, date
            FROM blog
            ORDER BY date DESC $pages->limit";
        $result = mysql_query($query) or die(mysql_error());


        while ($row = mysql_fetch_row($result)) {
//do stuff
}

「データベースを選択できませんでした」というエラーが表示されます。「または死ぬ」ケースはあまり気にしません。この接続を PDO で機能させたいだけです。

4

1 に答える 1

3

PDO を使用することはできず、mysql_*それらが関連していない関数を使用することを期待します。

コンストラクターの最初の引数である DSN に含まれているため、pdo でそのようなデータベースを選択する必要はありません。

$db = new PDO('mysql:host=localhost;dbname=jdlferreira', DB_USER, DB_PASS);

次に、MySQL ではなく、PDO インターフェイスを使用して DB とやり取りする必要があります。

    $stmt = $db->prepare("SELECT COUNT(*) FROM blog");
    $stmt->execute();
    $num_rows = $stmt->fetchColumn();
    $stmt->closeCursor();

    $pages = new Paginator;
    $pages->items_total = $num_rows;
    $pages->mid_range = 9; // Number of pages to display. Must be odd and > 3
    $pages->paginate();

    $query = "SELECT id, title, resume, date
        FROM blog
        ORDER BY date DESC $pages->limit";
    $stmt = $db->prepare($query);
    $stmt->execute();


    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
      // do stuff
    }
于 2012-09-17T21:08:46.837 に答える