0

私は PHP 準備メソッドを初めて使用します。次のコードで while ループを使用するには、いくつかの助けが必要です。

ここにクエリ関数があります

function query($query, $bindings, $conn) {
    $stmt = $conn->prepare($query);
    $stmt-> execute($bindings);
    $result = $stmt->fetchAll();

    return $result ? $result : false;
}

そしてクエリ

$home_team = query('SELECT home_team FROM premier_league
                    WHERE match_date >= :current_date
                    AND pre_selected = :pre_selected
                    ORDER BY match_date LIMIT 5',
                    array('current_date' => $current_date,
                    'pre_selected' =>$pre_selected),
                    $conn);
if (empty($home_team)){
    echo "No Match Selected for Today.";
} else {
    print_r($home_team);
}

このクエリで while ループを使用する方法と場所は?

4

4 に答える 4

0

PDOStatementを実装しているTraversableため、使用fetchAllするとオーバーヘッドが発生します。

function query($query, $bindings, $conn) {
    $stmt = $conn->prepare($query);
    $stmt->execute($bindings);
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    return $stmt;        
}

$home_team = query...;
foreach ($home_team as $row) {
    echo $row['home_team']."<br>\n";
}
于 2013-07-07T11:39:15.863 に答える
0

ブロックelse

else {
    print_r($home_team);
    /* here
    foreach ($home_team as $team) {
       echo $team->home_team . '<br>';
    }*/
}
于 2013-07-07T11:25:10.587 に答える
0

ここにいる間は必要ありません

function query($query, $bindings, $conn) {
    $stmt = $conn->prepare($query);
    $stmt-> execute($bindings);
    return $stmt->fetchAll();
}
$sql = 'SELECT home_team FROM premier_league WHERE match_date >= ?
            AND pre_selected = ? ORDER BY match_date LIMIT 5';
$home_team = query($sql,array($current_date, $pre_selected), $conn);
foreach ($home_team as $row) {
    echo $row['home_team']."<br>\n";
}
于 2013-07-07T11:31:21.097 に答える
-1

準備されたクエリを使用するという考え方は、サーバーがクエリを 1 回解析し、クエリ プランを 1 回作成することです。これは、パラメーター値のみを変更して繰り返し実行するクエリに役立ちます。したがって、 - 準備は一度行う必要があります。- 実行はループ内で行う必要があります。

ときどきクエリを実行する場合、準備のオーバーヘッドは価値がありません。

于 2013-07-07T11:31:55.567 に答える