1
私はmysql_fetch_assocによって配列された配列を持っています。配列にデータベースから必要な列が移入された後、配列の別のキーを追加したいと思います。私はforeachループでこれを達成しようとしましたが、私の関数は配列を返していません。どこが間違っていたのですか?関数内に新しい配列キーを追加します
//calculates payout
function calculate_payout($id){
$result = mysql_query("SELECT `result` FROM `bets` WHERE `id` = {$id}");
echo mysql_error();
$wager_total = mysql_query("SELECT SUM(`wager_amount`) AS `wager_total` FROM `wagers` WHERE `id` = '{$id}'");
$correct_wager_total = mysql_query("SELECT SUM(`wager_amount`) AS `correct_wager_total` FROM `wagers` WHERE `id` = '{$id}' AND `wager_option` = '{$result}'");
echo mysql_error();
$incorrect_wager_total = $wager_total - $correct_wager_total;
$sql = " SELECT * FROM `wagers` WHERE `id` = '{$id}' AND `wager_option` = '{$result}'";
echo mysql_error();
$data = mysql_query($sql);
$rows = array();
while(($row = mysql_fetch_assoc($data)) !== false){
$rows[] = array(
'bet_id' => $row['bet_id'],
'id' => $row['id'],
'wager_amount' => $row['wager_amount']
);
}
foreach ($rows as $p_row){
$payout = $p_row['wager_amount']/$incorrect_wager_total;
$payout = $p_row['wager_amount'] + $payout;
$p_row['payout'] = $payout;
}
return $p_row;
}
'foreach($ rows as $ p_row){'の必要はありません。これは 'while'ループですべて実行できます。あなたのエラーと実行は 'SELECT * FROM'で間違った順序になっています。このコードでSQLインジェクションを開いていて、エラーがなければエラー関数を実行しないでください。 – chris85