2011-08-11 10 views
0

php/mysqlを使って検索して置換しようとしています。私はこれを指定された表のヘッダー/列で行います。検索用語に価値があるとうまくいきます。しかし、私は指定された列の空のフィールドを検索し、値で置き換えたいです。検索語が空文字列のときは検索と置換ができません。どんな助け?PHPの検索/ mysqlの空のレコードを置き換えます

$SearchAndReplace_header = isset($_POST['SearchAndReplace_header']) ? $_POST['SearchAndReplace_header'] : ""; 

$SearchAndReplace_search_term = isset($_POST['SearchAndReplace_search_term']) ? $_POST['SearchAndReplace_search_term'] : ""; 

$SearchAndReplace_replace_with = isset($_POST['SearchAndReplace_replace_with']) ? $_POST['SearchAndReplace_replace_with'] : ""; 

//foreach($fields as $key => $val) { 
// if($SearchAndReplace_header == "all" || ($SearchAndReplace_header == $val)) { 
     // replace column value with parameter value 
     $sql = "UPDATE ".$table_name." SET ".$val." = REPLACE(".$val.",'".$SearchAndReplace_search_term."','".$SearchAndReplace_replace_with."')";            
     $db->query($sql); 
    // } 
    // } 
+0

を使用すると、空のレコードが何であるかを説明できますか?存在しないレコードですか?レコードが特定の 'WHERE'節に一致していますか? – ajreal

+0

ヌル値の例外を追加します。私は、 'REPLACE()'がそれに遭遇したときに置き換えるものを見つけることができないと思います。 – ace

+0

@ajreal:空の値または空の値を持つ空のレコード – karto

答えて

0

空のフィールドでは置換えできません。フィールドを直接設定する必要があります。

UPDATE table 
SET column = 'value' 
WHERE column = '' or column is null 

あなたは、単一のクエリ内の両方のケースをカバーしたい場合は、あなたがこのような何か行うことができます:

UPDATE table 
SET column = CASE 
       WHEN column IS NULL OR COLUMN = '' 
        THEN 'replace' 
       ELSE 
         REPLACE(column, 'find', 'replace') 
      END CASE 
+0

あなたはちょうど2つのケースを持っているので、ちょうど正常な場合はできませんでしたか? SET列= IF(列IS NULLまたは列= ''、 '置換'、置換(列、 '検索'、 '置換')) –

+0

@magicmike:ありがとうございます。私は本当にそれを取得していませんでした。 – karto

+0

@Puggan Se:Plsは私のコードでそれを試してみて、私にはっきりした画像を見せてください – karto

関連する問題