查询中的PDO逗号

时间:2012-10-30 10:54:18

标签: php mysql pdo

嘿伙计们我试图用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);

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

提前感谢您的任何帮助

1 个答案:

答案 0 :(得分: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);