json

2015-12-30 26 views
5

alanında eksik alanı olduğunda veritabanı güncelleştirilemiyor Kullanıcının giriş verilerini takip bilgilerini güncellemesine yardımcı olabilecek bir API yapıyorum. Ama giriş json alanında "şifre" olduğunda başarılı bir şekilde güncellenecektir, ancak json bu alana sahip olmadığında veriyi veritabanında güncelleyemiyorum.json

: eksik Parola alanı olduğu için bu hataya neden olur json olan

$postData = '{ "UserId" : "1", "password":"12345", "UserName": "minhkhang", "Address": "11/200" }' 

:

public function updateUserInfo(Request $request){ 
     $postData = $request->all(); 
     $data = json_decode($postData['postData'], true); 
     if(isset($data['password'])){ 
      $data['password'] = bcrypt($data['password']); 
     } 
     $popData = $data['UserId']; 
     unset($data['UserId']); 
     $updateInfo = array(); 
     foreach($data as $info){ 
      if($info != null){ 
       $updateInfo[] = $info; 
      } 
     } 
     $result = DB::update(GeneralFunctions::makeUpdateString($data, 'User', ' UserId = '.$popData), $updateInfo); 
     if($result != null && $result == true){ 
      return response()->json(['success'=>true, 'data'=>'Update Successful']); 
     }else{ 
      return response()->json(['success'=>false, 'error'=>'We have encountered an error, try again later!']); 
     } 
    } 

Bu her şeyin iyi çalışır json geçerli: Bu i veriyi güncellemek için kullanılır koddur

public static function makeUpdateString($keyvalarr, $table, $where){ 
     $stringSQL = 'UPDATE '.$table. ' SET ' ; 
     foreach($keyvalarr as $fieldname => $updateval){ 
      if($updateval != null){ 
       $stringSQL .= $fieldname.' = ? , '; 
      } 
     } 
     $stringSQL = substr($stringSQL, 0, -2); 
     if($where != null){ 
      $stringSQL .= 'WHERE '.$where; 
     } 
     return $stringSQL; 
    } 
:
$postData = '{ "UserId" : "1", "UserName": "minhkhang", "Address": "11/200" }' 

Bu kod i güncelleme metni giriş json izlemesini sağlamak için kullanılır

Teşekkürler.

cevap

2

burada söz konusu kod şudur: bu şifre JSON mevcut olan ve vermemek için doğruysa

if(isset($data['password'])){ 
    $data['password'] = bcrypt($data['password']); 
} 

Kontrol,

isset($data['password']) 

eğer deyimi dışında dönüyor ne olduğunu görmek için ne beklediğiniz gibi geliyor, ancak bu ifadenin kendi başına if deyimi olmadan yanlış olup olmadığını kontrol edin, hala atlamamasına dikkat edin, 'password' aradığınız tek yer gibi görünüyor

+0

bu sorunu nasıl çözebilirim, bu anahtarın başka bir projedeki dizide kullanılabilir olup olmadığını kontrol etmek için isset'i kullanmaya çalıştım ama iyi çalışıyor. Bu işlevde bunun neden sorun olduğunu bilmiyorum! –

+1

JSON'da 'parola' yoksa ne olur? kendi başına, 'şifreyi' kullanmayı düşünmüyorsanız, kodun tüm bölümünü kaldırmayı düşündünüz mü? ya da bunu kullanmanız gerekiyor mu ?, bunu zaten denediyseniz, fonksiyona $ veriyi aktardığında, JSON alanlara tuşlara basmaya çalışırken eşleşmiyorsa, ve GÜNCELLEME? Anahtarlar, tablonun beklediğini eşleştirebilir mi? Daha fazla yardımcı olabilecek herhangi bir özel hata alıyor musunuz? –

+0

Şifre json veya null olarak mevcut değilse, o zaman bu anahtarı unsetmem gerekir. Eğer availabel varsa bcrypt ile hash ve –