3

2 つの MySQL データベースがあり、PHP 変数を使用してデータを比較したいと考えています。データベースに接続し、PDO を使用して変数を割り当てます。

//Database 1
include_once('client-config.php');
try {
    $conn = new PDO(DB_HOST, DB_USER, DB_PASSWORD, array(PDO::ATTR_PERSISTENT => TRUE));
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

$DB_Name = "pencuy204";
$login = $_SESSION['SESS_login'];
$qry = "SELECT `BetType`, `RiskAmount`, `WinAmount`, `BetDate`, `GameDate`, `BetRotation`, `TeamParticipant`, `MoneyLine`, `Spread`, `OverUnder`
        FROM `{$login}_bet`"; 
$result = $conn->query($qry);

// If the SQL query is succesfully performed ($result not false)
if ($result !== false) {
// Parse the result set, and adds each row and colums in HTML table
    foreach ($result as $row) {
        $BetType[] = $row['BetType'];
        $BetRiskAmount[] = $row['RiskAmount'];
        $BetWinAmount[] = $row['WinAmount'];
        $BetGameDate[] = strtotime($row['GameDate']);
        $BetTeamParticipant[] = $row['TeamParticipant'];
        $BetMoneyLine[] = $row['MoneyLine'];
        $BetSpread[] = $row['Spread'];
        $BetOverUnder[] = $row['OverUnder'];
    }
}

//Database 2
try {
    require_once('bet-config.php'); 
    $conn1 = new PDO(B_DB_HOST, B_DB_USER, B_DB_PASSWORD);
    $conn1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}   

date_default_timezone_set('CST');
$today = date("Y-m-d"); 
$qry = "SELECT `AwayTeam`, `AwayScore`, `HomeTeam`, `HomeScore`, `FeedDate` FROM games";
$checkit = $conn1->query($qry);

if ($checkit !== false) {
    foreach($checkit as $row1) {
        $AwayTeam[] = $row1['AwayTeam'];
        $HomeTeam[] = $row1['HomeTeam'];
        $AwayScoreData[] = $row1['AwayScore'];
        $HomeScoreData[] = $row1['HomeScore'];
        $FeedDate[] = strtotime($row1['FeedDate']);
    }
}

私がやりたいことは、データベース 1 の特定の PHP 配列の各値を実行し、データベース 2 の特定の配列のすべての値を比較することです。これは、私が取り組んでいるループの例です。

for ($i = 0; $i <= $count; $i++) { 
    foreach ($BetGameDate as $b) {
        if (($b == $FeedDate[$i])) {
            foreach ($BetTeamParticipant as $team) {
                if (($team == $AwayTeam[$i])) {
                    foreach ($BetType as $type) {
                        if (($type == "Money Line")) {
                            if ($AwayScoreData[$i] < $HomeScoreData[$i]) {
                                $BetV[] = "-" . $BetRiskAmount[$i];
                                $BetC[] = intval('$BetV');
                            }

                            if ($AwayScoreData[$i] > $HomeScoreData[$i]) {
                                $BetV[] = "+" . $BetWinAmount[$i];
                                $BetC[] = intval('$BetV');
                            }

                            if ($AwayScoreData[$i] == $HomeScoreData[$i]) {
                                $BetV[] = 0;
                                $BetC[] = intval('$BetV');
                            }
                        }
                    }
                }
            }
        }
    }
}

この特定の例では、$GameBetDateが に等しく$FeedDate、ベット チーム名がアウェイ チーム名に等しく、ベット タイプが特定の文字列に等しい場合、その特定のベットのリスク額または勝利額に基づいてベットを計算します( foreach の使用は正しいと思いますが、反復 for ループを適切に使用して、データベース 2 のすべての値をデータベース 1 の特定の値に対して循環させるにはどうすればよいでしょうか。基準が一致する場合は、データベース 1 の値を使用して計算$BetCし、BetV?

4

1 に答える 1

0

コードで少しリファクタリングを使用できると思います。値を比較するには、array_diff メソッドを使用できます。最初のテーブルから値を選択します (PDO は配列を返すことができます) 2 番目の値を選択して比較します...

http://php.net/manual/en/function.array-diff.php

于 2013-02-23T16:57:18.277 に答える