尝试更新数值时出现语法错误(MySQL)

ajd2598

我是一名业余程序员,创建了一个基于PHP的在线门户,该门户将针对MMO型游戏更新MySQL数据库中的值,在该数据库中,我们正在使用门户跟踪每个用户保护的地砖的总数。

我正在处理脚本,该脚本将通过$ _POST数组提交HTML表单后,更新给定类型的受保护土地的表计数。

所讨论的MySQL表(players)具有四个相似的字段(以及其他字段):

  • wild_count
  • city_count
  • nether_count
  • end_count

在HTML表单上,用户可以在提交时选择一种土地类型,然后脚本尝试执行连接字符串以完成该字段,然后在准备好的SQL查询中为占位符提供此字符串,例如:

//Set land type string
$landtype = $_POST['landtype'] . '_count';
//Process ADD request
if (!isset($_POST['negative']))
{
    $action = 'ADDED'; //This is for a transaction report further down in the code
    try
    {
        $sql = 'UPDATE players SET
            `:landtype` = `:landtype` + :tiles WHERE id = :id';
        $query = $link->prepare($sql);
        $query->bindValue(':landtype', $landtype);
        $query->bindValue(':tiles', $_POST['tiles']);
        $query->bindValue(':id', $_POST['player']);
        $query->execute();
    }
    catch (PDOException $e)
    {
        $error = 'Error updating land count: ' . $e->getMessage();
        include './includes/error.inc.php';
        exit();
    }
...more code follows...

尝试使用以下代码发布表单时,出现以下错误:

更新土地计数时出错:SQLSTATE [42S22]:找不到列:1054“字段列表”中的未知列“ city_count”

(我已经city在表单示例中选择了)。

我尝试了相同的代码,除了在占位符周围没有反引号:landtype(即$sql = 'UPDATE players SET :landtype = :landtype + :tiles WHERE id = :id';),并且遇到了另一个错误:

更新土地计数时出错:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;可能有错误。检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第2行的“ city_count” =“ city_count” +“ 300” WHERE id =“ 1”附近使用

我不确定该如何进行。通过创建串联字符串来设置字段值的尝试是否会在此处将其破坏?

WEBjuju

不要像绑定值那样尝试绑定列名:

$sql = 'UPDATE players SET `'.$landtype.'` = `'.$landtype.'` + :tiles WHERE id = :id';

PHP PDO语句可以接受表名或列名作为参数吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 MySQL 中使用左连接时尝试更新表会出现语法错误

尝试在 MySQL 中创建 CTE 时出现语法错误

尝试在mysql中创建过程时出现语法错误

在mysql中更新记录时出现语法错误异常

从MYSQL更新时为什么会出现语法错误?

更新列时出现语法错误

尝试在 Postgresql 中使用 XOR 更新值时出现语法错误

尝试更新小时表中的time_out时出现语法错误

为什么在尝试更新数据库时出现语法错误?

尝试在mysql中创建触发器时出现语法错误

尝试在 mysql 中创建过程时出现 RECURSIVE 附近的语法错误

MySQL-尝试插入字符串/数字时出现语法错误

尝试通过 Slick 访问 MySql 数据库时出现语法错误

尝试将nodejs发送到mysql时出现sql语法错误

尝试选择INTO时出现“,'或附近的语法错误”

尝试创建类型时出现 Postgresql 语法错误

尝试运行 IF EXISTS 查询时出现语法错误

尝试使用归纳谓词时出现语法错误

尝试SubURL时出现Django语法错误

OpenLDAP:尝试添加LDIF时出现无效的语法错误

尝试动态编写搜索查询时出现语法错误

尝试输入日期和时间时出现语法错误

为什么在尝试创建表时出现语法错误?

尝试检索主键时出现SQL语法错误

尝试从Arelle模块导入Cntlr时出现语法错误

尝试使用 postgres INSERT INTO 表时出现语法错误

尝试使用支付墙示例时出现语法错误

尝试在树莓派上运行 javascript 时出现语法错误

尝试插入多个索引时出现 iloc 语法错误