0

スクリプトを基本的な sql から pdo に変換しようとしています。私はそれがあまり得意ではありませんが、pdo がデータベース内のすべての行を返すようになりました (制限 12)。制限なしと制限ありの 2 つのステートメントを作成できます。しかし、もともとそこにあるSQLではQL_CALC_FOUND_ROWS、クエリが高速になるように、合計行と制限行を返すという、これが私が考えるものを使用しています。

どうすれば PDO でできますか?

コード:

<?
// NORMAL SQL
$result = mysql_query('SELECT SQL_CALC_FOUND_ROWS * FROM photos ORDER BY id ASC limit 12');
$row_object = mysql_query('SELECT Found_Rows() AS rowcount');
$row_object = mysql_fetch_object($row_object);
$actual_row_count = $row_object->rowcount;

// PDO

$result = $pdo->prepare('SELECT * FROM photos ORDER BY id ASC limit 12');
$result->execute();
$TOTALrows = $result->rowCount();

?>

編集:いくつかのことを試しましたが、これは機能しません:

$result = $pdo->prepare('SELECT SQL_CALC_FOUND_ROWS * FROM photos ORDER BY id ASC limit 12');
$result->execute();

$resultALL = $pdo->prepare('SELECT Found_Rows() AS rowcount');
$resultALL->execute();
$resultALL->fetch(PDO::FETCH_OBJ);
$actual_row_count = $resultALL->rowcount;

EDIT2:まだ成功していません..

    $result = $pdo->query('SELECT SQL_CALC_FOUND_ROWS * FROM photos ORDER BY id ASC limit 12');
$resultALL = $pdo->query('SELECT Found_Rows() AS rowcount');
$resultALL->fetch(PDO::FETCH_OBJ);
$actual_row_count = $resultALL->rowcount;

print_r($actual_row_count);
echo $actual_row_count;

何も反響しません。

4

1 に答える 1

0

クレジットはここの爆発薬にも行きます...

クエリに外部入力を与えていない場合は、ステートメントを準備する必要はありません。

$result = $pdo->query("SELECT SQL_CALC_FOUND_ROWS * FROM photos ORDER BY id ASC LIMIT 12");

これはうまくいくはずです!

于 2013-09-04T18:25:17.053 に答える