2016-11-25 24 views
0

パスワードフィールドを更新したい場合は、にパスワード(NULLではない)が入力されていますが、同時に 'username'指定されたデータがmySQL内でヌルでない場合は、更新フィールド

これは私の現在のPHPコードです:

UPDATE `my_tbl` 
SET `username`= '".$dataArray['username']."', `password` = IF(IS NULL('".$dataArray['password']."'), 
    `password`, '".$dataArray['password']."') 
WHERE `id` = ".$dataArray['id'] 
+0

password = coalesce(passwordparam、password) – jarlh

+0

「IF」は「IIF」にする必要がありますか? – RST

+0

@RST – timmyRS

答えて

1

使用の連結は、CodeIgniterのアクティブなレコードを持つ

$condition=""; 
    if($dataArray['password'] != ""){ 
     $condition=" , `password` = '".$dataArray['password']."'"; 
    } 

    $sql= "UPDATE `my_tbl` SET `username`= '".$dataArray['username'] ."' ".$condition." 
         WHERE `id` = ".$dataArray['id']; 
         echo $sql; 
1
if($dataArray['password'])  
{ 
$condition=" , `password` = '".$dataArray['password']."'"; } else 
{  
$condition="";  
}  
$sql= "UPDATE `my_tbl` SET `username`= '".$dataArray['username'] ."' ".$condition." WHERE `id` = ".$dataArray['id']; 
+0

あなたは答えを何回繰り返したのでしょうか? –

+0

申し訳ありませんが、同じコードですが、カンマなしで何度か変更すると、連結前にエラーが発生する可能性があります。 – arun

1

にこの

$sql= UPDATE `my_tbl` SET `username`= '".$dataArray['username']."', 
        `password` = IF(IS NULL('".$dataArray['password']."'), `password`, '".$dataArray['password']."') 
        WHERE `id` = ".$dataArray['id']; 

変更にこのクエリを解決するために:

$data['username'] = $dataArray['username']; 

if(!empty($dataArray['password'])) { 
    $data['password'] = $dataArray['password']; 
} 

$this->db->where('id', $dataArray['id']); 
$this->db->update('my_tbl',$data); 
関連する問題