2017-03-13 12 views
1

私は奇妙だが非常に単純なSQLクエリが動作しないようです。 #1064 - - あなたはあなたの中にエラーが発生しているSQLクエリが機能しません。可能性のある構文エラー

UPDATE wp_postmeta SET `meta_value` = REPLACE(post_meta, `http://url/`, `http://new_url`) 

エラーメッセージは、新しい文が見られたが、区切り文字が、それと前の(REPLACE)と私は、コードを実行しようとしている間は見られなかった」表示されますSQL構文。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が1行目の ')'の近くで使用するようにしてください。助言してください。

+0

バッククォートではなく、文字列の値をまっすぐ一重引用符で囲む必要があります。 –

+0

質問を編集し、使用しているテーブルを表示してください。 –

答えて

0

具体的な問題は、一重引用符ではなくバッククォートの使用です。

UPDATE wp_postmeta 
    SET meta_value = CONCAT('http://new_url', SUBSTRING(post_meta, 12)) 
    WHERE meta_value LIKE 'http://url/%' AND 
      meta_key = ??; 

これを更新すべきでない行をフィルタするWHERE句を使用しています。しかし、私はロジックを表現するためのより良い方法があると思います。また、更新は文字列の最初の部分にある'http://url/'の出現にのみ行われます。通常は、その論理が意図しています。

+0

もし私がバッククォートを一重引用符に変更しても、それは同じ問題です... –

+0

本当に、代入の 'replace()'と 'meta_value'に対して' post_meta'を使用しますか? –

+0

ゴードン、すでに解決済み。それは私の質問のタイプミスでした。 –

関連する問題