2017-09-09 3 views
0

J'ai une boucle améliorée dans mon projet android qui boucle un tableau d'objet à mon instance de rénovation. Retrofit crée un tableau JSON qui finit par se terminer à l'opération de mise à jour. Le problème est, que seulement 1 ligne mises à jour.mise à jour pho PDO mise à jour seulement 1 ligne

Rénovation envoie le suivi de tableau JSON un par un à mon script de mise à jour

{ 
"answer": { 
    "answerString": "Answer1", 
    "correct": "Incorrect", 
    "question_id": "1", 
    "unique_id_edit": "59b43c44a0f755.82885599" 
}, 
"operation": "answer_edit" 
} 

{ 
"answer": { 
    "answerString": " Answer2", 
    "correct": "Incorrect", 
    "question_id": "1", 
    "unique_id_edit": " 59b43c44a10653.76375270" 
}, 
"operation": "answer_edit" 
} 

{ 
"answer": { 
    "answerString": " Answer3", 
    "correct": "Incorrect", 
    "question_id": "1", 
    "unique_id_edit": " 59b43c44a1b5c6.27290898" 
}, 
"operation": "answer_edit" 
} 

{ 
"answer": { 
    "answerString": " Answer4", 
    "correct": "Incorrect", 
    "question_id": "1", 
    "unique_id_edit": " 59b43c44a2b765.62888841" 
}, 
"operation": "answer_edit" 
} 

Je les éléments suivants mise à jour requête

public function editAnswer($unique_id_edit, $answerString, $correct, $question_id){ 



$sql = "UPDATE answer SET answerString = :answerString, correct = :correct WHERE unique_id = :unique_id AND question_id = :question_id"; 



// Prepare statement 
$query = $this ->conn ->prepare($sql); 

// execute the query 
$query->execute(array(':unique_id' => $unique_id_edit, ':answerString' => $answerString,':correct' => $correct, ':question_id' => $question_id)); 



if($query){ 

    var_dump(); 
    return true; 


} else { 

    return false; 

    } 
} 

Ceci est la table qui sont référencés dans mes variables et où les données sont mises à jour.

CREATE TABLE answer(
answer_id int(11) NOT NULL AUTO_INCREMENT, 
unique_id varchar(23) NOT NULL, 
answerString varchar(50) NOT NULL, 
correct varchar(20) NOT NULL, 
question_id int (11) NOT NULL, 
PRIMARY KEY (answer_id), 
    FOREIGN KEY (`question_id`) 
    REFERENCES `scratchcard`.`question` (`question_id`) 
    ); 

choses que j'ai essayé de résoudre

Je l'ai utilisé OkHttpClient pour vérifier que les tableaux JSON sont créés correctement dans mon programme Android, puis envoyés à travers mes fichiers AOP - dont ils sont .

J'ai également utilisé var_dump(); et vérifié chaque variable pour m'assurer qu'elles contiennent leurs valeurs prévues, et elles le sont.

Je crois que le problème réside dans ma requête de mise à jour, mais je ne sais pas pourquoi ou comment résoudre et Postman ne me donne aucune erreur - il échoue juste en silence!

Toute aide ou conseil serait apprécié.

+0

'$ success = $ query-> execute ......' et ensuite dans votre si le faire comme ceci 'if ($ success) {...}' – Fawaz

Répondre

0

J'ai réussi à trouver le problème, et j'ai pensé que je posterais la réponse au cas où cela aiderait quelqu'un d'autre à l'avenir.

Dans ma question, j'ai posté tous les tableaux JSON étant envoyés à travers, un œil attentif peut remarquer que la raison pour laquelle mon premier tableau toujours mis à jour était parce qu'il n'y avait pas d'espace blanc IE

{ 
"answer": { 
"answerString": "Answer1", <----Here is ok 
"correct": "Incorrect", 
"question_id": "1", 
"unique_id_edit": "59b43c44a0f755.82885599" <------ Here is ok 
}, 
"operation": "answer_edit" 
} 

Cependant sur tous mes autres tableaux JSON, j'ai des espaces vides

{ 
"answer": { 
"answerString": " Answer2", <-----Blank space between the quotes 
"correct": "Incorrect", 
"question_id": "1", 
"unique_id_edit": " 59b43c44a10653.76375270" <-----Blank space between the quotes 
}, 
"operation": "answer_edit" 
} 

donc de fixer, j'ai simplement appelé .trim() après avoir défini les valeurs IE

String answer1 = et_answer1_edit.getText().toString().trim();