1

PHP PDO 構文を使用しようとしています。多分誰かがこの平和なコードを見ることができるでしょう。少しの労力で少し多くの行ができたようです。

ユーザー後入力 (ID) をキャッチします。計算上の理由から、すべてのユーザーからの値 BejagFlach (それらの合計) と、ID で識別されるユーザーからの単一の値 BejagFlach が必要であることを知っています。ここのように、これには 2 つのクエリが必要ですか? または、より短い/より良い方法がありますか?

/* Fetch POST Data */
$User_Num = $_POST['User_Num'];

/* Build query for one User */
$dbSelect =  $objDb->prepare("SELECT BejagFlach,Name FROM Benutzer WHERE lfdNr = :User_Num");
$dbSelect -> setFetchMode(PDO::FETCH_ASSOC);  
$dbSelect->execute(array(':User_Num' => $User_Num));

/* Build query for all Users */
$dbSelect2 =  $objDb->prepare("SELECT BejagFlach FROM Benutzer");
$dbSelect2 -> setFetchMode(PDO::FETCH_ASSOC);  
$dbSelect2->execute();

/* Output + Calculate */    
while($row = $dbSelect->fetch()) {  
    $totalUser +=  $row['BejagFlach'];
    $who = utf8_encode($row['Name']);
}  

/* Output + Calculate */    
while($row = $dbSelect2->fetch()) {  
    $totalAll += $row['BejagFlach'];
}  

よろしく、トニ

4

2 に答える 2

0

少なくとも2番目のクエリが必要なので、データベースに対して1つのリクエストのみを実行するようにこれを実行します。

$dbSelect =  $objDb->prepare("SELECT BejagFlach,lfdNr FROM Benutzer");
$dbSelect -> setFetchMode(PDO::FETCH_ASSOC);  
$dbSelect ->execute();
while($row = $dbSelect->fetch()) {  
    $totalAll +=  $row['BejagFlach'];
    if( $row['lfdNr'] == $UserNom) {
        $totalUser += $row['BejagFlach'];
        $who = utf8_encode($row['Name']);
    }
}  
于 2012-08-08T12:14:37.130 に答える
0

いいえ、多すぎませんか?

私が変更する唯一のことは、一致したレコード数の後である場合は、rowCountを使用することです

<?php
    $sel = $dbh->prepare('select * FROM fruit');
    $sel->execute();

    /* Return number of rows that were deleted */
    print("Return number of rows that were selected:\n");
    $count = $sel->rowCount();
    print("Seleted $count rows.\n");
?>
于 2012-08-08T12:13:59.023 に答える