0

やあみんな私はPDOでこのクエリを取得しようとしましたが、今のところ達成されていないので、それは私の問題('、')のコンマかもしれません。私がやろうとしているのは、10進数または10進数がコンマで区切られているフィールドで、その文字列の1つの値を減算して、もちろんコンマを管理することです(最初または最後から削除します)。また、必要に応じてクエリを変更すると便利です

$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

そのようにパラメータトークンを再利用することはできません。最初の2つの別々の名前を付けて、同じ値を割り当てます。

"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 に答える