1

リクエストごとに異なるエントリを取得する方法を教えてもらえますか? 現在、リクエストが何であれ、コードは最初のエントリのみを表示します。

PHP

$dbh = new PDO("mysql:dbname=$db_name;host=$host", $username, $password);  
$sth = $dbh->prepare("SELECT * FROM data");
try {
    $sth->execute( array($_GET['page']) );
}
catch(PDOException $e) {
    die( $e->getMessage() );
}
list($page) = $sth->fetch(PDO::FETCH_NUM); 
$sth->closeCursor(); 
echo $page;

Javascript + jQuery

function getPage() {
    var data = 'page=' + encodeURIComponent(document.location.hash);
    $.ajax({
        url: "loader2.php", 
        type: "GET",        
        data: data,     
        cache: false,
        success: function (html) {                  
            $('#content').html(html);
        }
    });

コードが機能するはずの方法は、a href指し示す#home#otherpageクリックすると、リンクhrefに一致する「コールサイン」によって、コードがデータベースから一致するコンテンツをロードします(たとえば、コールサイン#homeはホームです)。誰かがここで私を助けてくれますか?

4

3 に答える 3

1

次の行は、返された配列の 1 つの値を変数 $page にロードしているようです。

list($page) = $sth->fetch(PDO::FETCH_NUM);

代わりに、PHP スクリプトの最後の 3 行で、次のようなことを試してみてください。

$resultsArray = $sth->fetch(PDO::FETCH_NUM);
$sth->closeCursor();
foreach ($resultsArray as $value)
{
    echo $value."\n";
}

これにより、PDO fetch() メソッドによって返されるすべての結果が出力されます。

于 2012-07-04T07:04:27.527 に答える
1

テーブルの一部の列へのバインドは見られません。以下の例を参照してください。

<?php
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit 
    WHERE calories < :calories AND colour = :colour');
    $sth->execute(array(':calories' => $calories, ':colour' => $colour));
?>

以下のリンクに詳細があります。

http://php.net/manual/en/pdostatement.execute.php

于 2012-07-04T06:54:56.277 に答える
0

select ステートメントに where 句がないことが原因でしょうか?

$sth = $dbh->prepare("SELECT * FROM data WHERE callsign=:page");
try {
    $sth->execute( array(':page' =>$_GET['page']) );
}
于 2012-07-04T06:55:11.807 に答える