Wordpress 4.2.2 update - failing wpdb-insert

8

Kontext

Ich habe an einem neuen WordPress-Blog als persönliche Website gearbeitet. Teil davon habe ich ein benutzerdefiniertes Kontaktformular, wo Leute ihre Details eingeben, um in Kontakt mit mir zu kommen. Es hat gut gearbeitet bis zum Morgen, nach dem ich auf 4.2.2v aus Sicherheitsgründen aktualisiert habe.

Problem

Nach dem Update kann das Formular keine Informationen in der Datenbank speichern. Die $wpdb->insert_id gibt 0 zurück. Die Abfrage ist die gleiche, die Seite ist die gleiche, alles ist gleich. Die einzige Änderung ist, dass ich von 4.2.1v auf 4.2.2v aktualisiert habe.

Gibt es ein Problem mit dem letzten Update oder muss ich nach dem WordPress Manual Update noch weitere Schritte ausführen?

debugging done ...

Ich habe sichergestellt, dass die DB-Version aktualisiert wird. Es zeigt 31535. Beim Debuggen mit $wpdb->lastquery und $wpdb->print_error() bekomme ich

%Vor%

?

Ich konnte nicht verstehen, was hier falsch ist. Wenn ich dieselbe Einfügeabfrage sowie die obige show full columns in der Befehlszeile unter Verwendung der gleichen Anmeldedaten für den Benutzer wp benutze, funktioniert es einwandfrei.

Hinweis: Wenn weitere Informationen benötigt werden, fragen Sie bitte.

    
Sanjeev 07.05.2015, 16:27
quelle

2 Antworten

15

Ich habe die Problemursache gefunden. Es ist aufgrund einer Spaltenbreitenbeschränkung.

Ich habe eine VARCHAR (9) Spalte und ich habe Daten gesendet, die 16 Zeichen lang sind. Die neue Änderung in 4.2.2 ruft die Tabelle meta ab und schneidet die Daten so aus, dass sie in die Größe der Spalte passt, die in der Datenbank definiert ist. Und es vergleicht auch die Pre-Crop- und Post-Crop-Daten. Wenn sie nicht übereinstimmen, schlägt sie fehl.

Das Problem ist, dass es ohne Fehlermeldung fehlschlägt. Ich habe das über das Debuggen der wpincludes / wp-db.php-Datei gefunden.

Bitte überprüfen Sie Ihr Spaltenlimit und die von Ihnen gesendete Spaltendatenlänge.

Sobald ich die Spaltenbreite erhöht habe (da die Daten definitiv mehr als 9 Zeichen haben werden), wurde das Problem gelöst.

    
Sanjeev 14.05.2015, 08:29
quelle
2

Ich hatte das gleiche Problem und es stellte sich heraus, dass einige nicht skalierte Werte von einer csv-Importfunktion in die Datenbank verschoben wurden.

Ich habe die richtige esc_url() und / oder esc_attr() und / oder esc_html() angewendet, um die Werte vor dem Einfügen zu bereinigen, und dann wurde die Abfrage erfolgreich ausgeführt.

    
Patrick S Perkins 11.05.2015 21:10
quelle