gpt4 book ai didi

php - 使用动态字段更新 MySQL

转载 作者:行者123 更新时间:2023-11-29 06:58:05 24 4
gpt4 key购买 nike

我正在使用 PHP 和 MySQL 制作一款游戏,我需要一个 UPDATE 查询,其中字段名称可能会从一个用户更改为另一个用户。

我的代码是:

$upd = $sql->prepare("UPDATE empire_users SET :p = :p + :p2 WHERE id = :id");
$upd->execute(array(
':p' => "p".$type,
':p2' => 10,
':id' => $_SESSION["id"]
));

在我的数据库中,用户有 3 列:pwood、pstone、pwheat,$type 只能是“wheat”、“stone”或“wood”。

我想更新所选字段(取决于 $type)以增加 p2(此处为 10)。

最佳答案

参见 http://php.net/manual/fr/pdo.prepare.php ,特别是以下评论:

对于那些想知道为什么在占位符周围添加引号是错误的以及为什么不能对表或列名称使用占位符的人:

关于预准备语句中的占位符如何工作存在一个常见的误解:它们不是简单地替换为(转义)字符串,并执行生成的 SQL。相反,要求“准​​备”语句的 DBMS 会针对如何执行该查询提出完整的查询计划,包括将使用哪些表和索引,无论您如何填写占位符,这些计划和索引都是相同的。

“SELECT name FROM my_table WHERE id = :value”的计划将与您替换“:value”时相同,但看似相似的“SELECT name FROM :table WHERE id = :value”却不能进行规划,因为 DBMS 不知道您实际上要从哪个表中进行选择。”

关于php - 使用动态字段更新 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44788504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com