【问题标题】:Unknown column in 'field list', in db, after a change in field name字段名称更改后,数据库中“字段列表”中的未知列
【发布时间】:2015-11-05 00:53:30
【问题描述】:

我有一个使用数据库的网站 (www.eqtraders.com) 它使用 PHP 和 MySQL 运行

似乎主机最近更新了 PHP,现在 'yield' 是 PHP 中的 predefined keyword。 所以......我到处走,将产量的所有字段引用更改为 r_yield。然后我将数据库字段名称更改为r_yield

我确信代码正在发送以下查询:

INSERT INTO recipes (item_id, r_yield, tradeskill, restriction, triv_low, triv_high, date_added, triv_display) VALUES ("51998", "1", "Spell Research", NULL, "432", "432", "2015:11:04", "432")

为此,我得到了错误:

“字段列表”中的未知列“r_yield”,在 db:recipes 中

PHPMySQL 报告字段名称为 r_yield(除了配方之外,还有两个表也需要更改)

Screenshot of PHPMyAdmin with the name change. Field 3

有人对我可能需要做什么有任何建议吗?

【问题讨论】:

  • 尝试清除数据库模型缓存(如果有)
  • 不完全确定为什么 PHP 关键字会影响 sql 查询,至少您在从查询结果访问数据时会使用字符串值 'yield'
  • “它是用 PHP 和 MySQL 运行的”信息量不大。您的网站是否在任何框架上运行?哪个版本?每个框架都有自己处理数据库的方式,因此请提供该信息。问候,
  • 它在 Apache 版本 2.4.17 上运行 PHP 版本 5.6.14 和 MySQL 版本 5.5.46-cll。
  • 我承认自己是一个业余爱好者,尤其是当我多年前编写此代码时。它在 Apache 版本 2.4.17 上运行 PHP 版本 5.6.14 和 MySQL 版本 5.5.46-cll。
    没有框架。这是自定义代码。给出错误的几行代码(剪切之间的大量代码)的示例是extract($_GET); extract($_POST); extract($_SERVER); if (isset($data) && isset($rsdata) && isset($rcdata)) { $rs = $data[item_id]; for ($i=0;$i<5;$i++) { $rs_temp_data[item_id] = $rsdata[item_id][$i]; $rs_temp_data[r_yield] = $rsdata[r_yield][$i];

标签: php mysql fieldlist


【解决方案1】:

在您的示例代码中,“item_id”和“r_yield”的使用不是很清楚,它们可能是常量或字符串。

问题出在 PHP 端。我建议:

  • 您将 MySQL 表中的列重命名为“yield”,因为一开始就不需要修改它,“yield”是 PHP 关键字,而不是 MySQL 关键字。

  • 您在 PHP 代码中使用单引号来表示字符串:

    $rs = $data['item_id'];
    $rs_temp_data['item_id'] = $rsdata['item_id'][$i];
    $rs_temp_data['yield'] = $rsdata['yield'][$i];
    

【讨论】:

  • 这终于是我必须要做的了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-08-19
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
  • 2017-10-03
  • 1970-01-01
相关资源
最近更新 更多