Ich habe ein Formular, das Daten in eine Datenbank in einer Codesigniter -App (CI v. 2.0.2) einreicht. Wir erlauben Benutzern, Datensätze zu "bearbeiten", indem sie einen Datensatz mit neuen Werten erneut einsetzen und dann ein Update durchführen. Bei Senden ruft das Formular die Erstellung der Stimmencontroller auf. In der Methode für Erstellen prüfen wir, ob bereits auf einem Eintragscode und der ID des Benutzers ein Datensatz vorhanden ist. Wenn ja, aktualisieren wir; Andernfalls erstellen wir einen neuen Rekord. Die Schöpfung funktioniert gut; Es ist nur das Update, mit dem ich ein Problem habe. Hier ist der Code.
Entry code:
Question 1:
Question 2:
Question 3:
Question 4:
Question 5:
< /code>
Controller < /strong> < /p>
function create() {
$id = $this->input->post('entry_code');
$judge_id = $this->input->post('dot_judge_id');
$data = array(
'entry_code' => $id,
'dot_judge_id' => $judge_id,
'q1' => $this->input->post('q1'),
'q2' => $this->input->post('q2'),
'q3' => $this->input->post('q3'),
'q4' => $this->input->post('q4'),
'q5' => $this->input->post('q5'),
);
//first check to see if there's already a record for this judge/entry
//if so, update. Otherwise, insert
$vote_id = $this->vote_model->getEntryById($id, $judge_id);
if($vote_id) {
log_message('debug', 'vote id exists: '.$vote_id);
$this->vote_model->updateRecord($data, $vote_id);
}
else {
log_message('debug', 'vote id does not exist; creating new');
$this->vote_model->createRecord($data);
}
/*
after submission, go to another page that gives choices - review entries, submit another entry, log out
*/
$data['msg'] = "Entry submitted";
$this->menu();
}
< /code>
Modell < /strong> < /p>
function getEntryByID($id, $judge_id) {
//determine if record already exists for entry/judge
$sql = 'SELECT vote_id from dot_vote WHERE entry_code = ? AND dot_judge_id = ?';
$query = $this->db->query($sql, array($id, $judge_id));
if($query->num_rows() == 1) {
$row = $query->row();
return $row->vote_id;
}
else {
return false;
}
}
function createRecord($data) {
$this->db->insert('dot_vote', $data);
return;
}
function updateRecord($data, $vote_id) {
log_message('debug', 'vote id is passed: '.$vote_id);
$this->db->where('vote_id', $vote_id);
$this->update('dot_vote', $data);
}
< /code>
Ich weiß, dass es in die UpdateRecord-Methode einbringt, da die Ausgabe log_message in meiner Protokolldatei mit der richtigen Vote_id angezeigt wird (das Feld automatischer Inkrement des zurückgegebenen Datensatzes). Aber was ich in den Browser bekomme, ist Folgendes: < /p>
< /p>
Kann jemand mich hier in die richtige Richtung zeigen? Ich habe in meiner Konfigurationsdatei Fehler angezeigt und habe SQL -Fehler beim Auftreten von SQL -Fehlern erhalten. Ich glaube nicht, dass dies ein SQL -Fehler ist. Aber ich habe keine Ahnung, was in dieser winzigen kleinen Funktion passieren könnte, die dies verursacht. Mein nächster Schritt besteht darin, das aktive Rekord -Update zu überspringen und einfach eine Standardabfrage zu verwenden, aber ich möchte wissen, was hier das Problem verursacht, auch wenn ich es in die andere Weise zum Laufen bringen kann.
Problem mit Active Record Update in Codesigniter [geschlossen] ⇐ Php
-
- Similar Topics
- Replies
- Views
- Last post