我正在嘗試將表單中的float值更新到數據庫。我的形式正確地讀取數據並顯示,如果該值已經存儲,但是當我更新什麼也沒有發生:UPDATE float value not posting to database
if ($_POST['action'] == 'Update') {
foreach($_POST['game'] as $game) {
$spread = ((floatval($game['spread']) > 0) ? $game['spread'] : 'NULL');
$sql = "update " . DB_PREFIX . "schedule ";
$sql .= "set spread = " . $spread . " ";
$sql .= "where gameID = " . $game['gameID'] && "CAST('spread' AS DECIMAL(5,1)) = " . $game['spread'];
$mysqli->query($sql) or die('Error updating score: ' . $mysqli->error);
}
header('Location: ./');
exit;
}
,這裏是我在哪裏讀取數據並顯示在表格:
<?php
$sql = "select s.*, ht.city, ht.team, ht.displayName, vt.city, vt.team, vt.displayName ";
$sql .= "from " . DB_PREFIX . "schedule s ";
$sql .= "inner join " . DB_PREFIX . "teams ht on s.homeID = ht.teamID ";
$sql .= "inner join " . DB_PREFIX . "teams vt on s.visitorID = vt.teamID ";
$sql .= "where weekNum = " . $week . " ";
$sql .= "order by gameTimeEastern";
$query = $mysqli->query($sql);
if ($query->num_rows > 0) {
echo '<table class="table table-striped">' . "\n";
echo ' <tr><th colspan="6" align="left">Week ' . $week . '</th></tr>' . "\n";
$i = 0;
while ($row = $query->fetch_assoc()) {
$homeTeam = new team($row['homeID']);
$visitorTeam = new team($row['visitorID']);
$rowclass = (($i % 2 == 0) ? ' class="altrow"' : '');
echo ' <tr' . $rowclass . '>' . "\n";
echo ' <td><input type="hidden" name="game[' . $row['gameID'] . '][gameID]" value="' . $row['gameID'] . '" />' . date('D n/j g:i a', strtotime($row['gameTimeEastern'])) . ' ET</td>' . "\n";
echo ' <td align="right"><input type="hidden" name="gameID[' . strtolower($visitorTeam->team) . ']" value="' . $row['gameID'] . '" />' . $visitorTeam->teamName . '</td>' . "\n";
echo ' <td><input type="text" name="game[' . $row['gameID'] . '][spread]" id="game[' . $row['gameID'] . '][spread]" value="' . $row['spread'] . '" size="3" /></td>' . "\n";
echo ' <td align="right"><input type="hidden" name="gameID[' . strtolower($homeTeam->team) . ']" value="' . $row['gameID'] . '" />at ' . $homeTeam->teamName . '</td>' . "\n";
echo ' </tr>' . "\n";
$i++;
}
echo '</table>' . "\n";
}
$query->free;
?>
關於如何獲取更新後的值的任何建議?
這裏是整個代碼的現在:
<?php
require('includes/application_top.php');
require('includes/classes/team.php');
if (!$user->is_admin) {
header('Location: ./');
exit;
}
if ($_POST['action'] == 'Update') {
foreach($_POST['game'] as $game) {
$spread = ((floatval($game['spread']) > 0) ? $game['spread'] : 'NULL');
$sql = "update " . DB_PREFIX . "schedule ";
$sql .= "set spread = " . $spread . " ";
$sql .= "where gameID = " . $game['gameID'] . " && CAST('spread' AS DECIMAL(5,1)) = " . $game['spread'];
$mysqli->query($sql) or die('Error updating spread: ' . $mysqli->error);
}
header('Location: ./');
exit;
}
$week = (int)$_GET['week'];
if (empty($week)) {
//get current week
$week = (int)getCurrentWeek();
}
include('includes/header.php');
?>
<h1>Enter Spreads - Week <?php echo $week; ?></h1>
<?php
//display week nav
$sql = "select distinct weekNum from " . DB_PREFIX . "schedule order by weekNum;";
$query = $mysqli->query($sql);
$weekNav = '<div class="navbar3"><b>Go to week:</b> ';
$i = 0;
while ($row = $query->fetch_assoc()) {
if ($i > 0) $weekNav .= ' | ';
if ($week !== (int)$row['weekNum']) {
$weekNav .= '<a href="spreads.php?week=' . $row['weekNum'] . '">' . $row['weekNum'] . '</a>';
} else {
$weekNav .= $row['weekNum'];
}
$i++;
}
$query->free;
$weekNav .= '</div>' . "\n";
echo $weekNav;
?>
<script type="text/javascript">
function getScores(weekNum) {
$.get("getHtmlScores.php", {week: weekNum}, function(data) {
for(var item in data) {
visitorScoreField = document.getElementById('game[' + data[item].gameID + '][visitorScore]');
homeScoreField = document.getElementById('game[' + data[item].gameID + '][homeScore]');
OTField = document.getElementById('game[' + data[item].gameID + '][OT]');
if (visitorScoreField.value !== data[item].visitorScore) {
visitorScoreField.value = data[item].visitorScore;
visitorScoreField.className="fieldLoaded";
}
if (homeScoreField.value !== data[item].homeScore) {
homeScoreField.value = data[item].homeScore;
homeScoreField.className="fieldLoaded";
}
if (data[item].overtime == '1') {
OTField.checked = true;
}
}
},'json');
}
</script>
<p><input type="button" value="Load Scores" onclick="return getScores(<?php echo $week; ?>);" class="btn btn-info" /></p>
<form id="spreadForm" name="spreadForm" action="spreads.php" method="post">
<input type="hidden" name="week" value="<?php echo $week; ?>" />
<div class="table-responsive">
<?php
$sql = "select s.*, ht.city, ht.team, ht.displayName, vt.city, vt.team, vt.displayName ";
$sql .= "from " . DB_PREFIX . "schedule s ";
$sql .= "inner join " . DB_PREFIX . "teams ht on s.homeID = ht.teamID ";
$sql .= "inner join " . DB_PREFIX . "teams vt on s.visitorID = vt.teamID ";
$sql .= "where weekNum = " . $week . " ";
$sql .= "order by gameTimeEastern";
$query = $mysqli->query($sql);
if ($query->num_rows > 0) {
echo '<table class="table table-striped">' . "\n";
echo ' <tr><th colspan="6" align="left">Week ' . $week . '</th></tr>' . "\n";
$i = 0;
while ($row = $query->fetch_assoc()) {
$homeTeam = new team($row['homeID']);
$visitorTeam = new team($row['visitorID']);
$rowclass = (($i % 2 == 0) ? ' class="altrow"' : '');
echo ' <tr' . $rowclass . '>' . "\n";
echo ' <td><input type="hidden" name="game[' . $row['gameID'] . '][gameID]" value="' . $row['gameID'] . '" />' . date('D n/j g:i a', strtotime($row['gameTimeEastern'])) . ' ET</td>' . "\n";
echo ' <td align="right"><input type="hidden" name="gameID[' . strtolower($visitorTeam->team) . ']" value="' . $row['gameID'] . '" />' . $visitorTeam->teamName . '</td>' . "\n";
echo ' <td><input type="text" name="game[' . $row['gameID'] . '][spread]" id="game[' . $row['gameID'] . '][spread]" value="' . $row['spread'] . '" size="3" /></td>' . "\n";
echo ' <td align="right"><input type="hidden" name="gameID[' . strtolower($homeTeam->team) . ']" value="' . $row['gameID'] . '" />at ' . $homeTeam->teamName . '</td>' . "\n";
echo ' </tr>' . "\n";
$i++;
}
echo '</table>' . "\n";
}
$query->free;
?>
</div>
<input type="submit" name="action" value="Update" class="btn btn-info" />
</form>
<?php
include('includes/footer.php');
首先,請閱讀http://bobby-tables.com關於SQL注入以及如何防止它們。現在你的代碼非常脆弱,你的數據庫可能會在幾秒鐘內被黑客入侵。使用預準備的語句 另外,你可以pelase向我們展示你的HTML格式嗎?我對'foreach($ _ POST ['game'] as $ game){'...有一個以上的name = game的字段有點困惑嗎? – Twinfriends
更改'$ sql。=「其中gameID =」。 $ game ['gameID'] &&「CAST('to'$ sql。=」where gameID =「。$ game ['gameID']。」&& CAST(' –