2017-09-09 2 views
0

Ich habe eine erweiterte Schleife in meinem Android-Projekt, die ein Objekt-Array zu meiner Retrofit-Instanz loops.PDO php update nur update 1 Zeile

Retrofit erstellt ein JSON-Array, das schließlich bei meinem Update-Vorgang endet. Das Problem ist, dass nur 1 Zeile aktualisiert wird.

Retrofit wird die Folge JSON-Array eins nach dem anderen zu meinem Update-Skript

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

Ich habe das Update folgende senden Abfrage

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; 

    } 
} 

Dies ist die Tabelle, die in meiner Variablen referenziert werden und wo die Daten aktualisiert werden.

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`) 
    ); 

Dinge, die ich habe versucht,

zu lösen ich OkHttpClient verwendet habe um zu überprüfen, dass der JSON-Arrays richtig in meinem Android-Programm erstellt werden und dann über meine PDO-Dateien gesendet - was sie sind .

Ich habe auch var_dump(); verwendet und überprüft jede Variable, um sicherzustellen, dass sie ihre beabsichtigten Werte halten, und sie sind.

Ich glaube, das Problem liegt in meiner Update-Abfrage, aber ich bin mir nicht sicher, warum oder wie zu beheben und Postman gibt mir keinen Fehler - es scheitert nur in der Stille!

Jede Hilfe/Beratung wäre willkommen.

+0

'$ success = $ query-> execute ......' und dann in Ihrem, wenn es so ist, 'if ($ erfolg) {...} ' – Fawaz

Antwort

0

Ich schaffte es, das Problem zu finden, und dachte, ich würde die Antwort posten, falls es jemand anderen in Zukunft hilft.

In meiner Frage, ich all dem JSON-Arrays geschrieben über gesendet werden, ein scharfes Auge kann feststellen, dass der Grund, warum meine erste Array war immer aktualisiert, weil es kein Leerraum IE

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

jedoch auf war alle meine anderen JSON-Arrays, ich habe einige Leerzeichen

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

daher zu beheben, habe ich einfach genannt .trim(), nachdem ich die Werte IE

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