Tworzę api, które mogą pomóc użytkownikowi zaktualizować swoje informacje zgodnie z danymi wejściowymi. Ale kiedy w polu wejściowym json ma pole "hasło", to zostanie ono zaktualizowane pomyślnie, ale gdy json nie ma tego pola, nie mogę zaktualizować danych w bazie danych. Jest to kod użyłem zaktualizować dane:Nie można zaktualizować bazy danych, gdy brakujące pole w jsonie
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!']);
}
}
Jest to json, gdy wszystko działa prawidłowo:
$postData = '{ "UserId" : "1", "password":"12345", "UserName": "minhkhang", "Address": "11/200" }'
To json co spowoduje błąd, ponieważ brakuje polu hasło:
$postData = '{ "UserId" : "1", "UserName": "minhkhang", "Address": "11/200" }'
jest to kod I używany do aktualizacji śledzić ciąg json wejściowy:
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;
}
Dziękuję.
więc jak mogę rozwiązać ten problem, próbowałem użyć isset, aby sprawdzić, czy ten klucz jest dostępny w tablicy w innym projekcie, ale działa dobrze. Nie wiem, dlaczego powoduje to problem w tej funkcji! –
Co zwraca, jeśli nie ma "hasła" w JSON? samodzielnie, czy rozważyłeś także usunięcie całej sekcji kodu, jeśli nie zamierzasz używać "hasła"? lub czy musisz go użyć ?, jeśli już próbowałeś, czy uważasz, że kiedy przekazuje $ dane do funkcji, że JSON nie pasuje, gdy próbował zastosować klucze do pól, i uruchomić UPDATE? Czy klucze mogą być niedopasowane, czego oczekuje stół? czy otrzymujesz jakieś konkretne błędy, które mogą pomóc więcej? –
Jeśli hasło nie jest dostępne w json lub null, muszę usunąć ten klucz. Jeśli jest dostępna, muszę zaszyfrować go za pomocą bcrypt i ustawić ponownie na tablicę –