2015-12-30 9 views
5

में फ़ील्ड गुम होने पर डेटाबेस अपडेट नहीं किया जा सकता है मैं एक एपीआई बना रहा हूं जो उपयोगकर्ता को उनकी जानकारी इनपुट डेटा का पालन करने में मदद कर सकता है। लेकिन जब इनपुट जेसन में फ़ील्ड "पासवर्ड" होता है तो यह सफलतापूर्वक अपडेट हो जाएगा लेकिन जब जेसन के पास यह फ़ील्ड नहीं है तो मैं डेटाबेस में डेटा अपडेट नहीं कर सकता।जेसन

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

यह json जो त्रुटि का कारण होगा है क्योंकि यह पासवर्ड फ़ील्ड मौजूद नहीं है:

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!']); 
     } 
    } 

यह json जब सब कुछ ठीक काम है: यह कोड मैं डेटा अद्यतन करने के लिए प्रयोग किया जाता है

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" }' 

इस कोड मैं अद्यतन स्ट्रिंग इनपुट json का पालन करने के लिए इस्तेमाल होता है

धन्यवाद।

उत्तर

2

यहाँ प्रश्न में कोड है:

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

जांच करें, क्या

isset($data['password']) 

अगर बयान के बाहर लौटा रहा है, अगर यह पासवर्ड JSON में मौजूद जा रहा है और दे रही है नहीं के लिए सच है आप एक ऐसा मुद्दा जो आपको उम्मीद की तरह लगता है, हालांकि यह देखने के लिए जांचें कि क्या यह कथन बिना किसी कथन के झूठा है, सुनिश्चित करें कि यह अभी भी उसमें कूद नहीं रहा है, ऐसा लगता है कि यह 'password' की तलाश में एकमात्र जगह है

+0

तो मैं इस समस्या को कैसे ठीक कर सकता हूं, मैंने यह जांचने के लिए जारी किया है कि यह कुंजी अन्य प्रोजेक्ट में सरणी में उपलब्ध है या नहीं, लेकिन यह ठीक काम कर रहा है। पता नहीं क्यों इस समारोह में कोई समस्या है! –

+1

JSON में कोई 'पासवर्ड' नहीं होने पर यह क्या वापस आता है? यदि आप 'पासवर्ड' का उपयोग न करने की योजना बना रहे हैं, तो क्या आपने स्वयं कोड के उस पूरे अनुभाग को हटाने पर विचार किया है? या क्या आपको इसका उपयोग करने की ज़रूरत है ?, यदि आपने पहले से ही कोशिश की है, तो क्या आपने माना है कि जब यह फ़ंक्शन में $ डेटा में गुजरता है, तो यदि JSON फ़ील्ड में कुंजी लागू करने का प्रयास करते समय मेल नहीं खाता है, और अद्यतन चलाओ? क्या चाबियाँ मेल नहीं कर सकतीं कि तालिका क्या अपेक्षा कर रही है? क्या आपको कोई विशिष्ट त्रुटियां मिल रही हैं जो अधिक मदद कर सकती हैं? –

+0

यदि पासवर्ड जेसन या शून्य में उपलब्ध नहीं है तो मुझे उस कुंजी को अनसेट करने की आवश्यकता है। यदि यह availabel है तो मुझे इसे bcrypt के साथ हैश करना होगा और फिर से सरणी –