0

嘿,伙计们,我尝试使用 PDO 获取此查询,但到目前为止还没有实现,所以这可能是逗号我的问题(',')你怎么想?我只是尝试做的是在一个十进制数字或十进制数字逗号分隔的字段中减去该字符串中的一个值,当然管理逗号(从开头或结尾删除)。如有必要,更改查询也很有用

$query = "UPDATE table SET field_to_change = SUBSTR(REPLACE(CONCAT(',' , field_to_change, ','), ':userid', ','), 2, LENGTH(REPLACE(CONCAT(',', field_to_change, ','), ':userid', ',')) - 2) WHERE field_id = :ownid ";

$conn = New PDO ...

$user_with_comma = ','.$value.','

$sql = conn->prepare($query);
$sql->bindValue(':userid', $user_with_comma , PDO::PARAM_STR);
$sql->bindValue(':ownid', $value2 , PDO::PARAM_INT);
$sql->execute();

我也试试

$query = "UPDATE table SET field_to_change = SUBSTR(REPLACE(CONCAT(',' , field_to_change, ','),   ', :userid ,', ','), 2, LENGTH(REPLACE(CONCAT(',', field_to_change, ','), ', :userid ,', ',')) - 2) WHERE field_id = :ownid ";

  $sql->bindValue(':userid', $value , PDO::PARAM_INT);

它总是给我“绑定变量的数量与令牌的数量不匹配”错误。

预先感谢您的任何帮助

4

1 回答 1

0

您不能以这种方式重用参数标记。给出前两个单独的名称并为它们分配相同的值:

"UPDATE table SET field_to_change = SUBSTR(REPLACE(CONCAT(',' , field_to_change, ','),   :userid1, ','), 2, LENGTH(REPLACE(CONCAT(',', field_to_change, ','), :userid2, ',')) - 2) WHERE field_id = :ownid "

然后:

$sql->bindValue(':userid1', $user_with_comma , PDO::PARAM_STR);
$sql->bindValue(':userid2', $user_with_comma , PDO::PARAM_STR);
$sql->bindValue(':ownid', $value2 , PDO::PARAM_INT);
于 2012-10-30T11:00:20.777 回答