php - 更新 SQL 列

标签 php mysql sql database pdo

所以我有一个包含 6 列的表格,每一列对应于某种产品类型。每列包含一个数字,对应于人们选择该产品类型的次数。

A | B | C | D | E | F
---------------------
0 | 0 | 0 | 0 | 0 | 0

因此,如果用户选择类型 A,那么我想将 A 列的编号从 0 更新为 1。所以这是我写的 SQL 代码:

$link = new PDO('***;dbname=***;charset=UTF-8','***','***');
$stmt = $link->prepare("UPDATE table SET :column=:num");
$stmt->bindParam(':column', $column);
$stmt->bindParam(':num', $num);
$stmt->execute();

但它根本没有更新任何东西。所以我猜 SQL 代码有问题,很可能与列占位符 :column 有关。谁能告诉我正确的 SQL 代码?

最佳答案

首先确保 $column 在可接受的值列表中。接下来,您不能绑定(bind) :column 您将像这样分配它:

$stmt = $link->prepare('UPDATE table SET ' . $column .' = :num'); 
$stmt->bindParam(':num', $num);
$stmt->execute();

如果你要检查一个有效的 $column 我会使用

$valid_column = preg_match('/[a-z0-9_]/i, $column);

或足够的替换(preg_replace)。尽管您可能会将其包装在 try/catch 中并设置要在 PDO 实例中抛出的异常以确保它是合法的。

关于php - 更新 SQL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13424009/

相关文章:

php - 从php中选择数据时,MySQL表被锁定多长时间?

php - Vagrant 命令未运行,正在安装开发机

mysql - 在 MySQL 中插入时间戳值的问题

php - php中rand函数的问题

php - 如何获得数组的百分比?

php - 加入 where and less then 条件

mysql - 使用MySQL函数找出表中的最大记录

java - JPA 规范等同于 ResultTransformer.DISTINCT_ROOT_ENTITY?

php - MySQL - 从两个表中查找有多少匹配项(如找到 6/9)

sql - 从 MySQL UNION 查询中排除结果