我正在尝试更新已编号的列,但是我收到一条警告,即这些列不存在,即使我在TRIPLECROWNpicks
中有第1列
SQLSTATE [42S22]:未找到列:1054未知列'' 1''在'字段列表'
$sql = "UPDATE TRIPLECROWNpicks SET `:pick` = :replace WHERE `user_id` = :user_id";
$stmt = $dbh->prepare($sql);
$stmt->bindValue(':user_id', $_POST['user_id'], PDO::PARAM_INT);
$stmt->bindValue(':replace', $replace, PDO::PARAM_INT);
$stmt->bindValue(':pick', $_POST['pick'], PDO::PARAM_INT);
$stmt->execute();
答案 0 :(得分:1)
您无法对表名或列名进行参数化。只有价值观。
因此,如果您想使用不同的列,请使用完全独立的查询。
答案 1 :(得分:0)
您无法对列名称进行参数化。
要么连接更新字符串(不是更好 - 可能是SQL注入),要么创建预准备语句的映射,并使用pick属性作为它们的选择器。
答案 2 :(得分:0)
您在此绑定值并声明它是整数。
$stmt->bindValue(':pick', $_POST['pick'], PDO::PARAM_INT);
然后在此处将其用作列名
SET `:pick` = :replace
这里至少有两件事是错的: