GOOGLE ADS

Dienstag, 12. April 2022

$wpdb->update gibt 500-Fehler als Antwort zurück - Wordpress Ajax

Ich versuche, ein Aktualisierungssystem für Benutzerdetails in wp-admin zu erstellen. Die Anfrage wird ordnungsgemäß mit allen Daten gesendet, während ich in den Entwicklertools (Netzwerk) nachgesehen habe, aber die Antwort wird 500 in roter Farbe empfangen

public function edit_employee_data()
{

global $wpdb;
$wpdb->update($wpdb->prefix. 'employee', array(
'name' => $_POST['name'],
'dob' => $_POST['dob'],
'email' => $_POST['email'],
'joining_date' => $_POST['joining_date'],
'address' => $_POST['address'],
'salary_package' => $_POST['salary_package'],
'gender' => $_POST['gender'],
'marital_status' => $_POST['marital_status'],
'department' => $_POST['department'],
'designation' => $_POST['designation']
));

}
add_action('wp_ajax_update_employee', array($this, 'edit_employee_data'));

Für den Ajax-Aufruf verwendetes Javascript:

<script>
jQuery(document).ready(function($) {
$('form.edit_employee').on('submit', function(e) {

e.preventDefault();
var name = $('#name').val();
var email = $('#email').val();
var dob = $('#dob').val();
var joining_date = $('#joining_date').val();
var address = $('#address').val();
var salary_package = $('#salary_package').val();
var gender = $('#gender').val();
var marital_status = $('#marital_status').val();
var department = $('#department').val();
var designation = $('#designation').val();
var message = $('.message').val();
$.ajax({
url: ajaxurl,
type: "POST",
data: {
action: 'update_employee',
name: name,
email: email,
message: message,
dob: dob,
joining_date: joining_date,
address: address,
salary_package: salary_package,
gender: gender,
marital_status: marital_status,
department: department,
designation: designation,
message: message,
},
success: function(response) {
$(".success_msg").css("display", "block");
},
error: function(data) {
$(".error_msg").css("display", "block");
}
});

});
});
</script>

Werte werden richtig mit dem Aktionsnamen gesendet, aber ich verstehe nicht, warum es nicht funktioniert.


Lösung des Problems

UPDATEOperationen benötigen WHEREKlauseln, es sei denn, Sie beabsichtigen wirklich, alle Zeilen in der Tabelle zu aktualisieren (in Ihrem Beispiel unwahrscheinlich). $wpdb->update()hat ein drittes Argument, das den WHEREFilter angibt, aber Sie haben es weggelassen.

Finden Sie heraus, wie Sie die Zeile – den Mitarbeiter – identifizieren, die Sie aktualisieren möchten. Es könnte employee_idzum Beispiel von sein.

Geben Sie dann so etwas wie das dritte Argument an.

[employee_id => $_POST[employee_id]]

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...