php - 'xxxxxx' 中的未知列 'field list'

标签 php mysql

我知道有很多关于这个的话题,我都看过了,但它们对我没有帮助。我的表名是正确的,没有空格或任何异常的东西。我检查了 100 次,然后又检查了 100 次。我将发布我的两段代码,希望有人能提供帮助。

当我尝试使用提交按钮时出现此错误: 更新赔率时出错:“字段列表”中的未知列“homeOdds”

发布:

if ($_POST['action'] == 'Update') {
foreach($_POST['game'] as $game) {

    $homeScore = ((strlen($game['homeScore']) > 0) ? $game['homeScore'] : 'NULL');
    $homeOdds = (str_replace("\xBD", ".5", $homeScore));
    $visitorScore = ((strlen($game['visitorScore']) > 0) ? $game['visitorScore'] : 'NULL');
    $visitorOdds = (str_replace("\xBD", ".5", $visitorScore));
    $sql = "update " . $db_prefix . "schedule ";
    $sql .= "set homeOdds = '" . $homeOdds . "', visitorOdds = '" . $visitorOdds . "' ";
    $sql .= "where gameID = " . $game['gameID'];
    mysql_query($sql) or die('Error updating odds: ' . mysql_error());
}
header('Location: index.php');
}

表格/表格和更新按钮:

<form id="scoresForm" name="scoresForm" action="odds.php" method="post">
<input type="hidden" name="week" value="<?php echo $week; ?>" />
<?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 = mysql_query($sql);
if (mysql_num_rows($query) > 0) {
echo '<table cellpadding="4" cellspacing="0" class="table1">' . "\n";
echo '  <tr><th colspan="6" align="left">Week ' . $week . '</th></tr>' . "\n";
$i = 0;
while ($result = mysql_fetch_array($query)) {
    $homeTeam = new team($result['homeID']);
    $visitorTeam = new team($result['visitorID']);
    $rowclass = (($i % 2 == 0) ? ' class="altrow"' : '');
    echo '      <tr' . $rowclass . '>' . "\n";
    echo '          <td><input type="hidden" name="game[' . $result['gameID'] . '][gameID]" value="' . $result['gameID'] . '" />' . date('D n/j g:i a', strtotime($result['gameTimeEastern'])) . ' ET</td>' . "\n";
    echo '          <td align="right"><input type="hidden" name="gameID[' . strtolower($visitorTeam->team) . ']" value="' . $result['gameID'] . '" />' . $visitorTeam->teamName . '</td>' . "\n";
    echo '          <td><input type="text" name="game[' . $result['gameID'] . '][visitorScore]" id="game[' . $result['gameID'] . '][visitorScore]" value="' . $result['visitorOdds'] . '" size="3" /></td>' . "\n";
    echo '          <td align="right"><input type="hidden" name="gameID[' . strtolower($homeTeam->team) . ']" value="' . $result['gameID'] . '" />at ' . $homeTeam->teamName . '</td>' . "\n";
    echo '          <td><input type="text" name="game[' . $result['gameID'] . '][homeScore]" id="game[' . $result['gameID'] . '][homeScore]" value="' . $result['homeOdds'] . '" size="3" /></td>' . "\n";
    echo '      </tr>' . "\n";
    $i++;
}
echo '</table>' . "\n";
}
?>
<br><input type="submit" name="action" value="Update" />
</form>

感谢任何帮助。

最佳答案

为了调试它,在将它提交到数据库之前,回显(或 var_dump)包含在 $sql 变量中的动态生成的 SQL。

然后将该语句带到另一个客户端进行测试。

MySQL 告诉您您正在引用的表 schedule 不包含名为 homeOdds 的列。

我们看不到被合并到 SQL 文本中的所有变量的内容。 (该代码似乎容易受到 SQL 注入(inject)攻击。

关于php - 'xxxxxx' 中的未知列 'field list',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31926958/

相关文章:

mysql 查询排序和排序

php - 如何在 MySQL 中选择最新的行?

PHP 邮件 header 不起作用?

php - TYPO3:如何在 Extbase 扩展中使用外部 PHP 库(不安装 composer)

php - 明智地显示或隐藏内容用户角色

mysql - 选择查询中是否检查空条件

mysql - 将 Rave 与 MyDac 结合使用

php - 每分钟通过 CRON 发送电子邮件 - 我的方法可以改进吗?

php - 使用多个嵌套 JSON 键进行 DynamoDB 扫描 (PHP)

mysql - 每天计算推文,按同一张表中的其他 3 列进行加权